加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite学习笔记(8)

发布时间:2020-12-12 20:26:15 所属栏目:百科 来源:网络整理
导读:线程: SQLite的很多版本支持多线程。 共享缓存模型: 允许一个进程中的多个连接使用共同的页缓存。用于嵌入式服务器的情况比较多。 Thread →Server→con→Page Cache→database。 共享缓存模式中,线程依赖于服务器线程帮助管理数据库连接。线程通过某种通

线程:

SQLite的很多版本支持多线程。

共享缓存模型:

允许一个进程中的多个连接使用共同的页缓存。用于嵌入式服务器的情况比较多。

Thread →Server→con→Page Cache→database。

共享缓存模式中,线程依赖于服务器线程帮助管理数据库连接。线程通过某种通信机制想服务器发送SQL语句,服务器使用线程分配的连接执行他们,返回结果。线程可以继续发出命令控制自己的事务,只是实际连接存在于其他线程中并有其他的线程管理。

共享缓存模式的连接使用不同的并发模型和隔离级别。注意同族连接的更改内容。

读未提交隔离级别:

编译指示read_uncommited,连接就是读未提交隔离级别。

解锁通知:

新版本的SQLite的包含的函数:sqlite3_unlock_notify();

声明:

int sqlite3_unlock_notify(

sqlite3 * pBlocked,/*等待的连接*/

void (* xNotify ) (void **apArg,int nArg) /*要触发的回调函数*/

void *pNotifyArg /*传递给xNotify 的参数*/

);

如果因为代码竞争没有获得共享锁,那么将要返回SQLITE_LOCKED;此时调用函数sqlite3_unlock_notify(),在阻塞连接上(第一个参数)上注册回调函数XNotify;

回调函数可以有任何参数。

拥有阻塞锁的连接将会触发xNotify回调,作为完成事务的sqlite3_step( )或者sqlite3_close()的一部分。多线程调用sqlite3_unlock_notify()时,事务可能已经完成了。此时,回调函数将会从sqlite3_unlock_notify()内初始化。每个阻塞连接上只会有一个注册解锁/通知回调函数;不可重入,回调函数中应咩有其他函数调用;使用Drop的时候,可能会出差错。

线程与内存管理:

与内存管理相关联的函数(指定堆的大小、限定堆栈):

void sqlite3_soft_heap_limit(int N) ; 将软堆设置为N字节。如果使用的内存超过了N,将会调用下一个函数sqlite3_release_memory(int N),返回实际释放的字节数。

int sqlite3_release_memory(int N);

默认这些函数是空操作,除非编译SQLite时,启动预处理命令指令:SQLITE_ENABLE_MEMORY_MANAGENENT.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读