我想知道SQLite(WAL模式)的恢复进度。 如果发生系统崩溃,SQLite如何知道我必须使用WAL文件恢复'? 以及SQLite在恢复过程中究竟做了什么?
请帮忙。
答案 0 :(得分:1)
原始内容保留在数据库文件中,更改将附加到单独的WAL文件中。当指示提交的特殊记录附加到WAL时发生COMMIT [...]
当读者需要一页内容时,它首先检查WAL以查看该页面是否出现,如果是,它会拉入WAL [...]中出现的页面的最后一个副本。如果WAL [...]中没有页面副本,则从原始数据库文件中读取页面。
如果发生系统崩溃,则尚未写入最后一个提交记录。如果没有提交记录,新数据将被视为无效,数据库将忽略它。
因此不需要实际的恢复操作。数据库只是继续从最后一个有效的提交记录开始写入新数据。