sqlite PRAGMA缓存溢出和WAL

flseospp  于 2023-03-08  发布在  SQLite
关注(0)|答案(1)|浏览(134)
  1. PRAGMA cache_spill在WAL模式下有任何影响吗?
    1.假设PRAGMA cache_spill=TRUE,在PRAGMA cache_size未满之前,什么情况下sqlite会选择修改数据库(即排他锁),而不是将缓存溢出到临时文件中(不需要对数据库进行排他锁),也就是说,我看不出在什么情况下缓存溢出会锁定数据库,同时我也经常看到sqlite制作临时文件。
nbysray5

nbysray51#

PRAGMA cache_spill在WAL模式下有任何影响吗?
我相信是这样的。基本上你可以假设WAL文件是数据库文件的一部分。
换句话说,我看不出缓存溢出在什么情况下会锁定DB。
我相信 “脏页” 是一个已更改的页,因此该高速缓存_spill的情况下,它被写入数据库文件(尽管是WAL文件),因此需要锁定数据库/文件(以及WAL文件)以防止其他写入(如果我理解 “使用WAL时磁盘I/O操作往往更有序。" 正确地说,https://www.sqlite.org/wal.html,则比使用日志模式时更需要锁定)。

相关问题