数据库连接D的模式S必须是WAL模式数据库。 在数据库连接D的模式S上不能有打开的写入事务。 自从在磁盘上创建(通过任何连接)后,一个或多个事务必须已写入当前的wal文件。
如果数据库连接D不知道模式S的数据库文件处于WAL模式,则对sqlite3_snapshot_open(D,S,P)的调用将失败。
2.2.预写日志(WAL)文件 当SQLite在WAL模式下运行时,使用预写日志或WAL文件代替回滚日志。与回滚日志一样,WAL文件的目的是实现原子提交和回滚。
快照对象的一个实例记录历史中某个特定点的WAL模式数据库的状态。 在WAL模式下,在同一数据库文件上打开的多个数据库连接可以分别读取不同的数据库文件历史版本。
在WAL模式下,使用wal-index检测对数据库的更改,因此不需要更改计数器。因此,对于WAL模式下的每个事务,更改计数器可能不会增加。
在WAL模式下,使用wal-index检测对数据库的更改,因此不需要更改计数器。因此,对于WAL模式下的每个事务,更改计数器可能不会增加。
每次提交事务或WAL文件重置时,SQLite会将留在文件系统中的回滚日志文件或WAL文件的大小与此编译指示所设置的大小限制进行比较,并且如果日志或WAL文件较大,则它将被截断达到极限。
例如,如果原始数据库被调用“app.db”,则回滚日志将被称为“app.db-journal”,并且预写日志将被称为“app.db-wal”。这种辅助文件命名方法在支持长文件名的系统上效果很好。
从版本3.7.0(2010-07-21)开始,SQLite也支持“WAL模式”。在WAL模式下,更改不会写入原始数据库文件。相反,更改会进入单独的“预写日志”或“WAL”文件。
由于回滚日志和WAL文件基于数据库文件的名称,这两个不同的数据库文件将共享相同的回滚日志或WAL文件。其中一个数据库的回滚或恢复可能会使用来自其他数据库的内容,从而导致损坏。

扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2026 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059
粤公网安备44030502008569号
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号
