在下面的参考文献中,有一个算法概述了使用redo和undo的事务恢复算法。该算法如下:
UNDO and REDO: lists of transactions
UNDO = all transactions running at the last checkpoint
REDO = empty
For each entry in the log, starting at the last checkpoint
If a BEGIN TRANSACTION entry is found for T
Add T to UNDO
If a COMMIT entry is found for T
Move T from UNDO to REDO然后给出了一个例子:

但这显然是不对的?由于T2已经提交,T必须在重做列表中。我是不是遗漏了什么?
发布于 2017-04-27 07:24:25
如果你从头到尾看一遍幻灯片,你会发现解释是相当准确的。
所描述的幻灯片显示的是当垂直轴位于检查点时的情况。
现在您在撤销队列中拥有了所有四个事务( T1、T2、T3、T4 )。
事务T3和T5位于撤消队列中。事务T2和T4在重做队列中。
进一步向前移动(在参考中),检查时间(垂直轴)向前移动并到达故障。
T3和T5是撤销-ne,T2和T4是REDO-ne (或重新应用)。
https://dba.stackexchange.com/questions/172122
复制相似问题