Change in Default Page Size in SQLite Version 3.12.0
The Default Page Size Change of SQLite 3.12.0
1.0简介
一个SQLite数据库文件由一个或多个“页面”组成。对于单个数据库文件,所有页面的大小相同,但对于不同的数据库文件,页面大小可以是512到65536之间的任意两个幂。
由于设计了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库继续读写。唯一改变的是一些默认设置。这应该会导致许多应用程序的性能提升。
虽然大多数应用程序不应该注意到任何变化(除了它们运行速度稍快),但如果出现问题,则可以在编译时使用C编译器的以下选项来恢复传统行为:
-DSQLITE_DEFAULT_PAGE_SIZE=1024
-DSQLITE_DEFAULT_CACHE_SIZE=2000
页面大小和高速缓存大小也可以分别在运行时使用page_size pragma和cache_size pragma来设置或更改。
3.0这种变化的可能的负面后果
SQLite数据库的最小大小是每个表和每个索引的一页。对于较大的页面大小,因此给定模式的空数据库的大小将增加四倍。但是,一旦数据库开始填充内容,较旧的1024字节页面数据库和较新的4096字节页面数据库的大小将快速收敛。由于放松的装箱限制,一旦添加了大量的内容,4096字节的页面尺寸实际上可能导致较小的文件。
SQLite is in the Public Domain.