数据库中的undo日志、redo日志、检查点

1Undo 日志记录某数据被修改前的值,可以用来在事务失败时进行rollback

2Redo 日志记录某数据块被修改后的值,可以用来恢复未写入data file的已成功事务更新的数据

3Undo/Redo日志 两者结合

例:某一事务的事务序号为T1,其对数据X进行修改,设X的原值是5,修改后的值为15

Undo日志为, X, 5>Redo日志为, X, 15>Undo/Redo日志为, X, 5, 15>

4checkpoint是为了定期将db buffer的内容刷新到data file。当遇到内存不足、db buffer已满等情况时,需要将db buffer中的内容/部分内容(特别是脏数据)转储到data file中。在转储时,会记录checkpoint发生的”时刻“。在故障回复时候,只需要redo/undo最近的一次checkpoint之后的操作


幂等性:在日志文件中的操作记录应该具有幂等性。幂等性,就是说同一个操作执行多次和执行一次,结果是一样的。

日志文件在故障恢复中,可能会回放多次,如果操作记录不满足幂等性,会造成数据错误。


你可能感兴趣的:(数据库,日志,数据库)