29  
查询码: 00000372
解决sqlite删除数据后,文件大小不变问题(VACUUM)
来源:https://www.cnblogs.com/waw/p/9237649.html
作者: 周杨 于 2019年11月26日 发布在分类 / 计算机应用 / 数据库 / SQLite ,于 2019年11月26日 编辑
数据 数据库 文件 删除 vacuum 狼人 sqlite 数据库文件 需要 除数



删除表格的全部数据:

DELETE FROM [Name]

当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变。原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。

解决方法有以下两种:


方法一:VACUUM命令

在数据删除后,手动执行SQL"VACUUM"命令,执行方式很简单。推荐使用。


方法二:将auto_vacuum设置成“1”

在数据库文件建成中,将auto_vacuum设置成“1”。但是第二个方法同样有缺点,只会从数据库文件中截断空闲列表中的页, 而不会回收数据库中的碎片,也不会像VACUUM 命令那样重新整理数据库内容。实际上,由于需要在数据库文件中移动页, auto-vacuum 会产生更多的碎片。而且,在执行删除操作的时候,也有那个.db-journal文件产生。要使用 auto-vacuum,需要一些前题条件。 数据库中需要存储一些额外的信息以记录它所跟踪的每个数据库页都找回其指针位置。 所以,auto-vacumm 必须在建表之前就开启。在一个表创建之后, 就不能再开启或关闭 auto-vacumm。



 历史版本

备注 修改日期 修改人
CREAT 2019-11-26 15:21:20[当前版本] 系统管理员

 附件

附件类型

PNGPNG

知识分享平台 -V 5.1.4 -大信谛威