小巧、快速、可靠。
三者兼得。

SQLite 3.12.0 版本默认页面大小变更

1.0 简介

一个 SQLite 数据库文件由一个或多个“页面”组成。对于单个数据库文件,所有页面的大小相同,但是对于不同的数据库文件,页面大小可以是介于 512 到 65536 之间的任何 2 的幂,包含边界值。

自 SQLite 数据库文件格式设计以来(2003 年),新数据库的默认 页面大小 一直是 1024 字节。这在 2003 年是一个合理的决定。但是,在现代硬件上,4096 字节的页面是更快的选择。因此,从 SQLite 版本 3.12.0(2016-03-29)开始,新数据库文件的默认页面大小已增加到 4096 字节。

数据库 缓存大小 的上限传统上默认为 2000 页。SQLite 版本 3.12.0 也将此默认设置更改为“-2000”,这意味着 2000 * 1024 字节,无论页面大小如何。因此,页面缓存使用的内存总量上限保持不变。

2.0 并非 兼容性中断

这些 SQLite 默认行为的更改不构成兼容性中断。所有旧版数据库文件仍然可以被新版本的 SQLite 读取和写入,所有新创建的数据库文件仍然可以被旧版本的 SQLite 库读取和写入。唯一变化的是一些默认设置。这应该会导致许多应用程序的性能提升。

尽管大多数应用程序不应该注意到任何变化(除了它们运行得更快一些),但如果出现问题,可以通过使用以下选项在编译时恢复旧的行为

-DSQLITE_DEFAULT_PAGE_SIZE=1024 
-DSQLITE_DEFAULT_CACHE_SIZE=2000

页面大小和缓存大小也可以使用 page_size pragmacache_size pragma 分别在运行时设置或更改。

3.0 此更改可能带来的负面影响

SQLite 数据库的最小大小为每个表和每个索引一个页面。因此,使用更大的页面大小,给定模式的空数据库的大小将增加四倍。然而,一旦数据库开始填充内容,旧的 1024 字节页面数据库和新的 4096 字节页面数据库的大小将很快收敛。由于更宽松的 bin-packing 约束,4096 字节页面大小实际上可能会导致更小的文件,一旦添加了大量内容。

此页面最后修改时间:2022-01-08 05:02:57 UTC