没有日志文件的sqlite3在线备份在正在运行的事务中是否有效



我使用sqlite3的备份API为我的sqlite3数据库创建在线备份,如示例2所示。在发生事务时,Sqlite3还向数据库保存了一个日志文件,使回滚成为可能。如果在事务运行时写入备份,似乎会导致问题。

那么,如果在事务运行时创建了备份,那么没有日志文件的备份结果仍然有效吗?我已经做了一些研究,但是找不到任何关于必须做些什么来确保数据库的有效备份的信息。是否要复制日志文件,还是备份API会处理所有事情?

备份使用正常的事务机制访问数据库,因此备份不可能处于不一致状态。(在日志回滚模式下,当其他人正在写时,备份事务将被阻塞;在WAL模式下,备份处于写事务开始前的状态。

最新更新