SQLite 的 WAL 文件,为什么不能随手删
WAL 模式把新事务追加到日志,再在合适的时候 checkpoint 回主数据库。本文整理两个容易忽略的环节,作为日常使用时的检查参考。
WAL 是写入流程的一部分
WAL 模式把新事务追加到日志,再在合适的时候 checkpoint 回主数据库。数据库文件和 WAL 的体积变化,并不一定代表异常。仍有活动连接时,手动删除 WAL 可能破坏正常工作。
备份要使用一致性方式
可以使用 SQLite backup API 或 sqlite3 的备份能力,也可以在应用完全停写后整体复制相关文件。不要只复制主数据库文件,就假定获得了最新的完整数据。
日常使用的小结
长期存在大 WAL 时,应检查长事务、连接管理与 checkpoint 策略。先理解谁在读写,再决定是否调整数据库参数。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 SkynetX!