关于 SQLite 中的journal_size_limit 的澄清

Ali*_*xel 3 sqlite transactions pragma journal journaling

如果我设置journal_size_limit = 67110000(64 MiB),我将能够:

  1. 使用/提交超过该值的事务(有点不可能)
  2. 能够成功执行VACUUM(即使数据库有 3 GiB 或更多)

VACUUM 命令的工作原理是将数据库的内容复制到临时数据库文件中,然后用临时文件的内容覆盖原始文件。覆盖原始文件时,将使用回滚日志或预写日志 WAL 文件,就像用于任何其他数据库事务一样。这意味着在对数据库进行 VACUUM 操作时,所需的可用磁盘空间是原始数据库文件大小的两倍

文档中并不完全清楚,如果有人能确切地告诉我,我将不胜感激。

CL.*_*CL. 5

journal_size_limit不是交易日志的上限;它是非活动交易日志的上限。

事务完成后,不需要日志,但删除日志可以使速度更快,因为文件系统不需要释放这些数据,然后为下一个事务重新分配它。

此设置的目的是限制未使用的日志数据的大小。