SQLite是一个嵌入式库并且实现了零配置、无服务端和事务功能的SQL数据库引擎。它在广泛领域内被使用,而且单线程读写性能与MySQL比肩,并且保证ACID性。 SQLite的存储后端是采用Btree实现,多个连接可以并发操作,但是同一时间只允许一个写存在。
SQLite在硬盘上一个数据库一个文件,每个数据库文件头部保存有这个数据库的元信息,包括版本,大小,Btree根节点位置等等。
SQLite将一个数据库以Page为单位进行管理和读写,每一个Page默认为512字节,通常可以看做一个硬盘sector大小。
Page分为4种类型:
1. Btree类型的page用来保存Btree节点和数据信息
2. 有payload类型page用来保存Btree中数据溢出节点的数据
3. freelist类型page用来保存被释放的中间page以便利用
4. pointer map类型的page,可以看成是page的索引,用来保存每一个页面的上级页面,如保存Btree节点的父节点页面,保存freelist页面的上一个页面等等。每个Btree都代表一个表,根据主键来查找或者可以建立在其他列的索引Btree。
SQLite数据库存储引擎设计
最新推荐文章于 2024-06-05 09:00:47 发布