随笔分类 - sqlite
摘要:新建一个数据库,执行“create table t1(id integer,info text);”命令后对数据库文件结构的简要分析如下:数据库中第一个页是Btree页。第一个页面的前100个字节是一个对数据库文件进行描述的“文件头”,通过对应关系可以获得“包括数据库的版本、格式的版本、页大小、编码等所有创建数据库时设置的永久性参数”。文件头后面紧跟sqlite_master表的页面,也就是数据库的第一个页面,每个页面由四个部分构成1:页头信息0D表示页面的类型,00 00 表示第一个自由块偏移,00 01表示本页的CELL个数,03 C8表示CELL的开始地址(偏移地址),00表示碎片数。2
阅读全文
摘要:Btree结构中最要包含一个BtShared结构,该结构包含了一个打开的数据库的所有页面相关信息。View Code struct BtShared { Pager *pPager; /* The page cache */ BtCursor *pCursor; /* A list of all open cursors */ MemPage *pPage1; /* First page of the database */ u8 inStmt; /* True if we are in a statement subtransact...
阅读全文
摘要:源码中在开始BTREE事务的时候,首先会调用btreeIntegrity(p)检测状态的正确性,其实现如下:#define btreeIntegrity(p) \ assert( p->inTrans!=TRANS_NONE || p->pBt->nTransaction<p->pBt->nRef ); \ assert( p->pBt->nTransaction<=p->pBt->nRef ); \ assert( p->pBt->inTransaction!=TRANS_NONE || p->pBt->
阅读全文

浙公网安备 33010602011771号