sqlite 页面结构分析

新建一个数据库,执行“create table t1(id integer,info text);”命令后对数据库文件结构的简要分析如下:

数据库中第一个页是Btree页。第一个页面的前100个字节是一个对数据库文件进行描述的“文件头”,通过对应关系可以获得“包括数据库的版本、格式的版本、页大小、编码等所有创建数据库时设置的永久性参数”。


文件头后面紧跟sqlite_master表的页面,也就是数据库的第一个页面,每个页面由四个部分构成

1:页头信息

0D表示页面的类型,00 00 表示第一个自由块偏移,00 01表示本页的CELL个数,03 C8表示CELL的开始地址(偏移地址),00表示碎片数。

2:CELL偏移地址

03 C8表示第一个CELL的偏移地址,如果有多个CELL依次存放多个CELL的偏移地址,通过CELL的偏移地址可以定位到具体CELL的位置。

3:CELL内容信息

根据CELL偏移地址(03 C8)计算得到0x000003c8存放CELL的实际信息。

sqlite_master是一个系统表,保存了数据库的schema信息并且保存表根页的编号等信息。这个例子中0x000003d9的值为2,表示t1这个表在数据库文件中第二个页面中。从文件头可以得知页面大小为1024,也就可以得知第二个页面的起始位置是0x00000400.

4:中间未分配的空间

可以看出CELL内容信息从页面尾部开始分配,页面的前端分配页面头信息和CELL的偏移地址信息。中间是未使用的页面空间。

转载请注明原始出处:http://www.cnblogs.com/chencheng/archive/2012/07/10/2585534.html

转载于:https://www.cnblogs.com/chencheng/archive/2012/07/11/2585534.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值