首页 > 解决方案 > 修剪旧记录后 SQLite 文件变大

问题描述

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

在启动时,我还运行VACUUM压缩数据库,以防行限制发生变化并且数据库中的空间主要是空闲分配空间。

我的理解是,一个DELETE命令会将已删除的页面简单地标记为可以再次写入的“空闲页面”。尽管如此,我发现在达到行限制后插入新行时文件大小继续增长(尽管速度较慢)。这是由于免费页面的碎片化吗?我可以期望这种碎片化积累在足够长的时间过去后停止吗?我的应用程序打算在很长一段时间内不间断地运行,如果文件大小在每个INSERT机器的硬盘驱动器上增加,就会被填满。

标签: sqlite

解决方案


推荐阅读