为什么清除SQLite数据库不会减小其大小?

时间:2010-03-30 11:48:13

标签: sqlite

我有一个SQLite数据库。

我创建了表格并填充了大量数据。

然后我通过删除并重新创建表来清除数据库。我确认所有数据都已删除,并且使用SQLite Administrator查看表是空的。

问题是数据库文件(* .db3)的大小在清除后保持不变。

这当然不可取,因为我希望在我清除数据后重新获得数据占用的空间。

有没有人做出类似的观察和/或知道发生了什么?

可以做些什么呢?

2 个答案:

答案 0 :(得分:25)

来自here

当从数据库中删除对象(表,索引,触发器或视图)时,它会留下空白空间。下次将新信息添加到数据库时,将重用此空白空间。但与此同时,数据库文件可能比严格必要的更大。此外,频繁的插入,更新和删除可能会导致数据库中的信息碎片化 - 在整个数据库文件中被刮掉,而不是在一个地方聚集在一起。

VACUUM 命令通过将其内容复制到临时数据库文件并从副本重新加载原始数据库文件来清除主数据库。这样可以消除空闲页面,使表格数据保持连续,并以其他方式清理数据库文件结构。

答案 1 :(得分:3)

数据库大小像水印一样工作,例如如果水上升,水印上升,当水退去时,水印停留在

的位置

你应该研究缩小的数据库