在什么情况下,SQLite中的页面缓存会被清除



我在iOS应用程序中使用sqlite。有时我会在运行时替换sqlite文件,然后关闭并重新打开与它的连接。但当sqlite连接到新文件时,它似乎经常返回旧文件的查询结果。到目前为止,我的猜测是它以某种方式保留并使用了旧文件中的页面缓存。

所以我的问题是:在什么情况下SQLite的页面缓存会被丢弃?

明白了。我正在浏览我所有的连接,并关闭和重新打开每个连接。当我简单地将它们全部关闭(并让它们稍后根据需要重新打开)时,缓存似乎被清除了。我的猜测是,缓存是按文件而不是按连接的,当所有到文件的连接都关闭时,它会被重置。这在多线程环境中可能很难实现。

最新更新