- 博客(4)
- 资源 (4)
- 收藏
- 关注
原创 SQLite3源码学习(11)lookaside分析
1.概述 SQLite数据库连接会进行许多小的、短期的内存分配。当用sqlite3_prepare_v2()编译SQL语句时这种情况最常见。这些小的内存分配用来存储诸如表名和列名,解析树节点、单独的查询结果、B-Tree游标对象。这会导致频繁地调用malloc()和free(),用掉分配给SQLite的大部分CPU时间片。 SQLite引入lookaside来帮助减小分配内存的
2018-01-31 22:29:14 1112
原创 SQLite3源码学习(10)testpcache分析
testpcache是page cache的一个简单插件,用tcl调试时输入命令sqlite3_shutdown和sqlite3_config_alt_pcache 1就会把pcache1替换成testpcache。 testpcache由下列函数构成: static const sqlite3_pcache_methods2 testPcache = { 1, (vo
2018-01-28 14:44:56 469
原创 SQLite3源码学习(9)Page Cache概述
Page cache是进程分配的内存空间,用来缓存数据页面。page cache的管理独立于操作系统,当一个线程打开一个数据库连接时就会建立一个page cache,对于一个进程中的多线程,它们可以有独立的cache也可以共享一个cahce,下图描述了page cache的结构: 在Pager初始化时为pPager->pPCache分配了空间,pPCache是PCache类型的结构体,其成员
2018-01-26 23:27:48 1810
原创 SQLite3源码学习(8)Pager模块概述及初始化
1.概述 当前端解析完SQL命令后,需要对数据库进行操作时,会通过B-Tree模块查找需要的页面,B-Tree维护着磁盘各页面之间的复杂关系,B-Tree不会直接读写磁盘,它会通过调用pager模块来获取所需的页面或修改页面,pager模块的作用可以说是B-Tree和磁盘读写的中间代理。 pager模块作为事务管理器,实现了数据库的ACID特性,从而支持并发控制和存储失败后的恢
2018-01-21 18:42:11 1385
sqlite3编译通过的多文件eclipse工程
2017-11-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人