【SQLite】释放SQLite数据库的空闲空间

作者:一年又一年 分类: 📐 技术 发布时间:2014-8-22 22:28 8090 次浏览 0 条评论

嗯,我是SQLite大白一只啦。 

今天做SQLite写入数据提速测试,测试完了后删除了测试的数据,但是一瞥眼还是看到数据库文件的文件大小大的离谱。 

于是我就想SQLite的数据库是不是不会自动缩小文件大小的 (因为我联想到某虚拟机分配虚拟硬盘大小时,虚拟硬盘文件只能扩容不能减小,用过的部分即在虚拟机中释放了但实际文件大小中依旧不变)

然后我在群中询问((⊙_⊙)为什么不去百度)

.....

....

许久,群中寂静万分…… (我难道单机了?!)

好吧,关键的时候还是要自己找资料啦。
  • 首先我找到了这个:
SQLite数据库中删除数据后,文件大小没有变化
http://bbs.csdn.net/topics/390092795
 
发现了下面的这个语句,把自动VACUUM打开~ 嗯好像不错的样子
PRAGMA auto_vacuum = 1;

 操作  执行了一下这句,然后再执行了删除所有记录的语句。

 结果  无果。体积未变。

  • 接着我又看到了这个:
解决sqlite删除数据后,文件大小不变问题
http://blog.csdn.net/yangchun1213/article/details/7656146
发现原来SQLite真有直接执行的VACUUM的命令:
VACUUM;

 操作  执行这句。

 结果  OK,体积缩小了。

总结
  • PRAGMA auto_vacuum = 1; 只会在提交删除数据的事务时才生效;
  • 如果要立即缩小数据库的体积,手动执行 VACUUM;
  •  “但是,auto-vacuum模式也会导致在数据库文件中产生更多的碎片。 并且,auto-vacuum模式也不能像 VACUUM命令那样压缩部分满的磁盘页。”
编程 SQLite 数据库 文件大小 释放空间

♥ 若您欲转载敝站的原创内容,还请您附注出处及相应链接

发表评论

* 标注的项目为必填项。

您的邮箱地址将不会在页面中公开
您的站点地址将会被检查,如被认为不适则可能被移除
Ɣ回顶部