← 中文资源

简体中文版本

用页面回收缩小 SQLite

调整页面与 auto_vacuum 设置回收空闲页,让本地 SQLite 文件在两次维护之间保持紧凑。

阅读英文原文

目标

本地缓存库在频繁增删后留下大量空闲页,数据变小但磁盘占用仍高。本配方先查看页面数与空闲页数,再启用增量 auto_vacuum 并执行一次 VACUUM,使空闲页被回收,之后由增量真空持续保持紧凑,同时提醒 auto_vacuum 变更需在同连接上执行 VACUUM 才生效。

步骤要点

  1. 查看 page_count、freelist_count 与 auto_vacuum。
  2. 启用增量 auto_vacuum 并执行 VACUUM。
  3. 用 incremental_vacuum 参数回收全部空闲页。
  4. 验证空闲页接近零且文件变小。
sqlite3 app.db "PRAGMA page_count; PRAGMA freelist_count; PRAGMA auto_vacuum;"

排错提示

  • auto_vacuum 变更需在同连接 VACUUM 才生效。
  • 增量真空过于激进会产生碎片。
  • 不会自动回收 WAL 空间。

适用边界

  • 转换期间需要独占访问。
  • 不负责 WAL 文件空间回收。