修剪旧记录后,SQLite文件的大小会增加

时间:2018-10-10 19:37:56

标签: sqlite

我有一个SQLite数据库,我的应用程序使用它来存储一些数据。它可能变得非常大(大小为几GB),只有3列:自动递增计数器,UUID和二进制BLOB。我的应用程序跟踪数据库中的行数,并在超过行数限制时删除最旧的行(基于增量)。

在启动时,我还运行VACUUM来压缩数据库,以防行数限制已更改并且数据库中的空间大部分是可用的空闲空间。

我的理解是,DELETE命令将简单地将已删除的页面标记为“空闲页面”,然后可以再次将其覆盖。尽管如此,我看到在达到行数限制后插入新行时,文件大小仍在继续增长(尽管较慢)。这是由于免费页面的碎片化吗?我可以期望在足够长的时间后,这种碎片增加会停止吗?我的应用程序打算长时间不间断运行,并且如果每个INSERT上的文件大小增加,则计算机的硬盘驱动器将填满。

0 个答案:

没有答案