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可能比较占用内存。