sqlite如何在不同进程之间同步页面缓存?

时间:2019-05-24 01:55:28

标签: sqlite multiprocess

我知道sqlite在进程中使用缓存页面来提高读取性能,而且sqlite允许多进程通过应用文件级锁定机制来访问同一sqlite数据库文件。我的问题是:如果进程A更新了页面X,同时进程B拥有页面X的缓存,进程B会读取停顿值吗?或者有机械师将更改通知给进程B?

1 个答案:

答案 0 :(得分:0)

来自the documentation的数据库文件格式:

  

文件更改计数器是偏移量24处的4字节大端整数,在修改数据库文件后对其进行解锁时,该计数器将递增。当两个或多个进程正在读取同一数据库文件时,每个进程可以通过监视更改计数器来检测其他进程的数据库更改。当另一个进程修改数据库时,一个进程通常将希望刷新其数据库页面缓存,因为该缓存已过时。文件更改计数器可简化此操作。

所以,是的,当有人修改数据库时,有一种方法可以通知其他连接,以便它们可以使缓存无效。