关于SQLite中的journal_size_limit的澄清

时间:2013-05-14 15:32:17

标签: sqlite transactions pragma journal journaling

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

  1. 使用/ commit事务处理该值(稍微不太可能)
  2. 能够成功执行VACUUM(即使数据库具有3 GiB或更多)
  3.   

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

    在文档中并不完全清楚,如果有人可以肯定地告诉我,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

事务完成后,不需要日志,但是删除日志会使事情变得更快,因为文件系统不需要释放这些数据然后重新分配它以用于下一个事务

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