SQLite WAL文件本身是否会减小?

问题描述 投票:1回答:1

我的SQLite WAL文件有时变得非常大,我认为该文件保留了它的大小,并且只是在必要时开始覆盖,它是否只是重置它的大小?

我知道pragma wal_checkpoint(TRUNCATE)命令手动设置一个检查点,将文件大小减小到零,但我注意到了一些问题。

我启动了我的编写器,它创建了一个新的数据库并开始将数据写入其中。在这个程序的开头我发出了wal_checkpoint命令(显然是第一次运行,因为数据库中没有任何内容,它没有做任何事情)。读者根本没有被打断。当我关闭编写器并重新启动它(它重新连接并继续使用现有数据库)时,它会按预期清除wal文件,但现在(直到我删除数据库并重新开始)当读取器从数据库读取时,编写器获取SQLITE_BUSY异常 - 通常并非总是如此。

所以我想知道在没有调用wal_checkpoint的情况下,WAL会在某个时刻截断自己吗?如果有人可以回答:为什么它在调用之后的任何后续运行中都会导致我的SQLITE_BUSY异常?有没有比wal_checkpoint(Truncate)更好的方法?

sqlite wal
1个回答
0
投票

有点回答。我发现如果我让编写器关闭数据库连接并重新打开它,它将重置-wal文件的大小!

© www.soinside.com 2019 - 2024. All rights reserved.