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

时间:2014-08-07 14:22:19

标签: c++ sqlite transactions database-backups

我使用sqlite3的备份API来创建我的sqlite3数据库的在线备份,如Example 2中所述。在事务的情况下,Sqlite3另外向数据库保存日志文件以使回滚成为可能。如果在事务正在运行时写入备份,它就会产生问题。

因此,如果在事务运行时创建了备份,那么生成的备份在没有日志文件的情况下仍然有效吗?我已经做了一些研究,但找不到任何必须完成的信息来确保数据库的有效备份。是否要复制日志文件或备份API是否处理所有内容?

1 个答案:

答案 0 :(得分:1)

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