SQLite 的 VACUUM 命令通过复制主数据库中的内容到一个临时数据库文件,然后清空主数据库,并从副本中重新载入原始的数据库文件。这消除了空闲页,把表中的数据排列为连续的,另外会清理数据库文件结构。
为什么需要 VACUUM
当你从 SQLite 删除数据后,未使用的磁盘空间被添加到一个内在的“空闲列表”中用于存储你下次插入的数据。为了提高效率,磁盘空间并没有丢失,但也不向操作系统返回磁盘空间,这就导致删除数据乃至清空整个数据库后,数据文件大小还是没有任何变化,依然很大。
VACUUM 命令通过复制主数据库文件到临时数据库并从临时数据库重新载入主数据库,以整理数据库文件。这将除去空白页,使表数据彼此相邻排列,并整理数据库文件结构。
手动 VACUUM
1. 对整个数据库发出 VACUUM 命令的语法:
F:\sqlite3>sqlite3 database_name "VACUUM";
2. 在 SQLite 提示符中运行 VACUUM:
sqlite> vacuum;
3. 在特定的表上运行 VACUUM:
sqlite> vacuum table_name;
自动 VACUUM (Auto-VACUUM)
SQLite 的 Auto-VACUUM 与 VACUUM 不大一样,它只是把空闲页移到数据库末尾,从而减小数据库大小。通过这样做,它可以明显地把数据库碎片化,而 VACUUM 则是反碎片化。所以 Auto-VACUUM 只会让数据库更小。
数据库瘦身工具
本站由于服务器资源有限,使用的是 SQLite,目前数据库大小 1MB 多一点,做了这个工具用来压缩数据库。
使用方法
- 将软件放在数据库所在目录。
将软件名称更改为 数据库名+瘦身.exe。
- 例如:你的数据库完整文件名是
woshishujuku.db,那么请将软件名称改成woshishujuku.db瘦身.exe。
- 例如:你的数据库完整文件名是
- 双击运行,软件即可检测到数据库名称,点击“瘦身”按钮即可。


评论 (0)