回收sqlite3删除记录后的容量

Anti-Spam

Photo by Franck V. on Unsplash

Sqlite3是一个非常简单的文件数据库,部署方便,使用简单,对于小型应用来说真的是人见人爱,花见花开。在部署Typecho的时候我就直接默认使用了sqlite3作为数据库,这样也方便以后数据的迁移,整个博客一个文件夹拷走就好了,非常简单暴力。

不过最近博客上突然有很多垃圾评论,这个搞得我非常烦,面对几万条的垃圾评论,我又不能手动删除,后面还是安装了一个评论过滤的插件,另外修改了后台管理的相关代码,加入了一键删除垃圾评论的功能,总算是感觉好了一些,不过后面同步数据库的时候发现数据库有20几兆,这个。。。我博客写了没几篇,看来全是垃圾评论惹的祸呀。

经过查找相关资料,我发现原来sqlite3数据库删除数据记录的时候并不会立即回收相应的空间,而是会将这些空间作为后续新记录的存储空间,不得不说这个也是一个非常不错的设计,但是对我来说,我可能要过个几百年才能写到20M的博文,所以还是赶紧回收一下这些容量比较靠谱。

回收操作其实也比较简单,直接运行一条vacuum命令就好了。

sqlite3 xxxxx.db
sqlite>cacuum;

退出之后一看,文件只有600K,嗯,这才是正常的大小。

发表新评论