为什么我的SQLite数据库中有未使用的页面?

时间:2012-02-10 12:27:29

标签: sql database sqlite

如果我查看数据库的数据库设置(使用SQLite Manager),我的freelist_count为16.根据this source,空闲列表计数是

  

数据库文件中未使用的页数

未使用的网页是什么意思?为什么有不可用的网页?自由列表大于零是不是很糟糕?我该怎么做才能将数字减少到零?

1 个答案:

答案 0 :(得分:2)

来自SQLite FAQ

  

(12)我删除了很多数据,但数据库文件没有变小。这是一个错误吗?

     

没有。从SQLite数据库中删除信息时,未使用的信息   磁盘空间被添加到内部“空闲列表”,并在下一个重用   你插入数据的时间。磁盘空间不会丢失。但也不是   返回操作系统。

     

如果删除大量数据并想缩小数据库文件,请运行   VACUUM命令。 VACUUM将从头开始重建数据库。   这将使数据库具有空的空闲列表和文件   尺寸很小。但请注意,VACUUM可能需要一些时间   运行(在Linux机器上每兆字节大约半秒   SQLite是开发的,它可以使用多达两倍的临时磁盘   空间作为原始文件运行时。

     

从SQLite 3.1版开始,是使用VACUUM命令的替代方法   是自动真空模式,使用auto_vacuum pragma启用。

拥有一些免费页面没什么不好,除非他们占用大量空间。根据应用程序的需要,由您来决定“无所谓”的结束位置并启动“重要”。