根据redo log恢复数据

redo logging机制的基本原理是: 进行数据恢复时,对Incompleted Transaction不做处理;而对Committed Transaction,把记录了的数据改动再重现做一遍。

记录log

引用

Start Transaction T



记录:X被修改后的值是A

记录:Y被修改后的值是B

记录:X被修改后的值是C



Commit Transaction T

根据log恢复

1. 从上往下扫log文件

2. 遇到Commit Transaction时,依次…, 将X的值改回为A, Y的值的改会为B,  X的值改为C…

可靠性如何保证?

Redo logging要求一个transaction的所有log entry都已经写入disk了,才能把数据改动写入disk. 进行数据恢复时,根据这个规则, 对于Incomplete Transaction我们可以断定数据改动还没写入disk, 所以可以直接忽略; 而对于Commited Transaction, 数据改动可能已经写入disk,也可能未写入, 这时只须根据log把数据改动做一遍,可能白做,但绝对无害。

Redo Logging的缺点

在把一个transaction的所有log entry flush to disk之前,还不能flush数据改动; 也就是说,要有足够大的buffer, 容纳这些数据改动,直到transaction结束. 所以,redo logging可能比较占用内存。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.