首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Change in Default Page Size in SQLite Version 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.

扫码关注腾讯云开发者

领取腾讯云代金券