Mark

QianDao维护之数据库压缩
前言 自己家里一直有私有qiandao.today站,因为当初定位为个人使用,所以选择了更轻便方便的SQLite数...
扫描右侧二维码阅读全文
09
2018/12

QianDao维护之数据库压缩

本文已 超过30天没有更新,如果文章内容或图片资源失效,请留言反馈,我会及时处理。

前言

自己家里一直有私有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:December 10th, 2018 at 12:16 am
如本文“对您有用”,欢迎随意打赏我,让我坚持创作!

Leave a Comment

One comment

  1. hunter   Windows 10 x64 Edition Windows 10 x64 Edition Google Chrome 71.0.3578.98 Google Chrome 71.0.3578.98

    菜鸟真心看不懂啊