aspose.info
ZH

SQLite 文件格式

更新于

什么是 SQLite 文件?

带有 .sqlite 扩展名的文件是使用 SQLite 软件创建的轻量级 SQL 数据库文件。它是一个文件本身的数据库,实现了一个自包含、功能齐全、高可靠的SQL数据库引擎。通过简单地通过网络交换这些文件,SQLite 数据库文件可用于在系统之间共享丰富的内容。几乎所有的手机和电脑都使用 SQLite 来存储和共享数据,是跨平台应用程序的文件格式选择。由于其紧凑的使用和易用性,它捆绑在其他应用程序中。 SQLite 绑定存在于编程语言中,例如 C、C#、C++、Java、PHP 和许多其他人。

SQLite 文件格式

SQLite 实际上是一个 C 语言库,它使用 SQLite 文件格式实现 SQLite RDBMS。随着新设备每天的发展,其文件格式一直保持向后兼容以适应旧设备。 SQLite 文件格式被视为数据的长期存档格式。

数据库文件

SQLite 数据库通过两个文件完全维护。

  • 主数据库文件 - 包含 SQLite 数据库的完整状态
  • 回滚日志 - 将附加信息存储在第二个文件中,并在执行事务期间使用。如果 SQLite 处于 WAL 模式,则会维护一个写入头日志文件。

日志文件

该文件旨在保留所有信息,以防在计算机崩溃等情况下无法完成最后一次交易。该文件用于将数据库文件恢复到一致状态。

页

主 SQLite 数据库文件由一页或多页组成。在任何时间点,主数据库中的每个页面都有一个单一的用途,它是以下之一:

  • 锁字节页 *一个freelist页面
  • 一个freelist的主干页面 *一个freelist叶子页面
  • 一个 b 树页面
  • 一个表b-tree内部页面
  • 一个表b-tree叶子页
  • 一个索引b-tree内部页面
  • 一个索引 b-tree 叶页
  • 有效载荷溢出页面
  • 一个指针映射页面

SQLite 数据库文件的大小可以从几千字节到几千兆字节不等。

SQLite 标头

SQLite 数据库标头位于数据库文件的前 100 个字节中。每个有效的 SQLite 数据库文件都以 16 个字节(十六进制)开头:53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00。标题字段的详细信息如下表所示。

偏移量尺寸描述
016标头字符串:“SQLite 格式 3\000"
162以字节为单位的数据库页面大小。必须是介于 512 和 32768(含)之间的 2 的幂,或者表示页面大小为 65536 的值 1。
181文件格式写入版本。 1 为遗产; 2 为 WAL。
191文件格式读取版本。 1 为遗产; 2 为 WAL。
201每页末尾未使用的“保留"空间字节数。通常为 0。
211最大嵌入有效载荷部分。必须是 64。
221最小嵌入有效载荷部分。必须是 32。
231叶有效载荷部分。必须是 32。
244文件更改计数器。
284以页为单位的数据库文件大小。 “头内数据库大小"。
324第一个 freelist 中继页的页码。
364空闲列表页面的总数。
404模式 cookie。
444模式格式编号。支持的模式格式为 1、2、3 和 4。
484默认页缓存大小。
524在自动真空或增量真空模式下最大根 b-tree 页面的页码,否则为零。
564数据库文本编码。值 1 表示 UTF-8。值 2 表示 UTF-16le。值 3 表示 UTF-16be。
604由 user_version pragma 读取和设置的“用户版本"。
644对于增量真空模式为真(非零)。否则为假(零)。
684由 PRAGMA application_id 设置的“应用程序 ID"。
7220保留扩展。必须为零。
924有效的版本号。
964SQLITE_VERSION_NUMBER

参考 ##

另请参阅