SQLite架构与关键函数

suntroop / 2024-09-26 / 原文

 Sqlite 架构解析 - 知乎 (zhihu.com)

SQLite是一种轻量级的嵌入式数据库系统,被广泛应用于各种移动设备和桌面应用程序中。下面学习SQLite数据库的存储机制,并介绍其相对于其他数据库系统的优势。通过深入了解SQLite的存储机制,我们可以更好地理解它在实际应用中的表现和优势。

SQLite数据库的存储机制

文件存储结构:

SQLite数据库以单个文件的形式存储,这个文件包含了所有的表、索引、触发器等数据库对象。这种文件存储结构使得SQLite非常适合嵌入式设备和桌面应用程序,因为它不需要独立的服务器进程和额外的配置。

数据页:

SQLite将数据分成固定大小的数据页(通常为4KB(4096)),每个数据页中包含了多个数据行。这种数据页的存储方式使得SQLite能够高效地处理大规模数据集,同时还能够减少磁盘IO的次数,提高数据库性能。

B树索引:

B+树用于存储表,B树用于存储索引。SQLite使用B树索引来加速数据的检索。B树索引以平衡树的形式存储索引数据,可以快速定位到特定的数据行。SQLite支持多种类型的索引,包括普通索引、唯一索引和全文索引等。

SQLite 使用 B-Tree 存储索引,一个 B-Tree 对应一个索引;使用 B+Tree 存储表,一个 B+Tree 对应一个表。Tree
创建时就会为其分配一个根 Page(对应一个 Page Number),Page 标识了该 Tree,Tree 的根 Page 在 其生命周期内不会发生变更。

sqliteBtreeCreateIndex   // 创建索引
sqliteBtreeCreateTable   // 创建表
sqlite3BtreeCreateTable //

 

数据编码:

SQLite使用变长整数编码、浮点数编码和字符串编码等方式来存储数据。这种数据编码方式既节省了存储空间,又提高了数据访问的效率。