前言

自己家里一直有私有qiandao.today站,因为当初定位为个人使用,所以选择了更轻便方便的SQLite数据库而没有选择MySql,使用SQLite数据库作为数据临时性的缓存,对多片区进行划分 SQLite数据库文件,起初效率有明显的效率,但历经一数个月后数据库文件从几K也上升到了近100M,数据量也达到了 4多万条,虽然使用上的效率直观上没有造成太大的影响,但服务器的占用内存却比原来多占用了一些。今天刚好打算清除一个SQLite的冗余数据,整理删除了数据库日志跟部分占用大的无用数据后,却发现SQLite数据库文件占用空间的大小 一点没有少,这是为什么呢?


原因解析

当你从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据。磁盘空间并没有丢失。但是也不向操作系统返回磁盘空间。(嘿嘿,Sqlite.org的FAQ中提到过这个问题)


解决方法

在数据删除后,手动执行VACUUM命令,执行方式很简单
VACUUM命令会清空“空闲列表”,把数据库尺寸压缩到最小。但是要耗费一些时间,需要耐心等待,等待时间根据设备性能。
另外推荐用使用Navicat for Sqlite来管理数据库。
软件打开数据库,点击查询按钮,新建查询,手工输入 VACUUM 即可。


关于数据删除

tpl表-->har包表(可把无用的签到条目删除)
tasklog表--> 签到日志(可全部删除)

做这一系列操作前请务必备份一下数据库,以防操作失误误删数据!!!

获得模板

Last modification:October 22nd, 2019 at 03:11 am
If you think my article is useful to you, please feel free to appreciate