系统崩溃时Sqlite3如何在WAL模式下恢复

时间:2016-07-13 01:34:51

标签: sqlite wal

我想知道SQLite(WAL模式)的恢复进度。 如果发生系统崩溃,SQLite如何知道我必须使用WAL文件恢复'? 以及SQLite在恢复过程中究竟做了什么?

请帮忙。

1 个答案:

答案 0 :(得分:1)

documentation说:

  

原始内容保留在数据库文件中,更改将附加到单独的WAL文件中。当指示提交的特殊记录附加到WAL时发生COMMIT   [...]
  当读者需要一页内容时,它首先检查WAL以查看该页面是否出现,如果是,它会拉入WAL [...]中出现的页面的最后一个副本。如果WAL [...]中没有页面副本,则从原始数据库文件中读取页面。

如果发生系统崩溃,则尚未写入最后一个提交记录。如果没有提交记录,新数据将被视为无效,数据库将忽略它。

因此不需要实际的恢复操作。数据库只是继续从最后一个有效的提交记录开始写入新数据。