Sqlite3源码分析
ShuTry
IT追求者
展开
-
Sqlite3源码部署
大二,大三花了不少时间来学习sqlite3的源码,之前一直是通过文档记录 没有写成博客。现在打算通过博客交流自己的成果,但需要强调的是,博客中可能会有个人理解偏差而出现出错误。一:Sqlite3的下载: 需要在官网上下载几个文件,下载最新版本的。二:sqlite3配置使用然后将sqlite-tools文件中的sqlite3.exe文件配置到环境变量中,然后就可以在命令框中调用sqlit...原创 2018-02-26 13:04:23 · 1068 阅读 · 0 评论 -
sqlite3源码分析之缓存
这里直接对sqlite3源码中的缓存那一部分的源码进行分析 SQLite 数据库文件由固定大小的“页(page)”组成。页的默认大小为 1024 个字节(1KB)。页 是数据库读写和在内存中进行管理的基本单位。数据从文件读到内存以后,总得有个地方存吧,但无论从 PgHdr1 结构还是从 PgHdr 结构中, 都找不到这样的指向页缓存的指针。 实际的实现是这样的:当为PgHdr1 结构变量分配...原创 2018-02-27 13:14:18 · 1636 阅读 · 0 评论 -
sqlite3源码解析之sql解析(一)
一:sql准备过程在前面的分析中我们知道,sqlite3_open()为我们打开了数据库并准备了所要的内存空间,锁,vfs等。接下来就分析sql是如何被解析器一步一步解析的。上图是准备sql语句的过程分析图。 1.1:sqlite3_prepare_v2函数:该函数是准备的入口函数。 传入了5个参数:sqlite3 *db : sqlite3_open()返回的数据库句柄con...原创 2018-03-02 16:10:57 · 13546 阅读 · 3 评论 -
sqlite3源码解析之sql解析(二)
sqlite3ParserInit函数主要目的就是初始化一个解析器SQLITE_PRIVATEvoid sqlite3ParserInit(void *yypParser){ yyParser *pParser = (yyParser*)yypParser;//解析器对象 #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #e...原创 2018-03-04 20:40:27 · 1348 阅读 · 0 评论