补偿日志的重做信息对应于日志条目的撤消信息,这使得在撤消阶段必须创建它们。
在我看来,CLR 重做信息与触发它们的日志的撤消信息相同。
但是不应该是他们有REDO信息以便在中断恢复过程的情况下取消执行的UNDO操作吗?
这是一个例子:
让 T2 成为失败交易:
<#55, T2, P3, J=J+9, J = J-9, #53>
J=J+9 是重做操作,J = J-9 是撤消操作。
现在,在重做阶段附加到日志文件的 CLR 将是:
<#56, T2, J=J-9,__, #53>
J=J-9 是原始日志条目的撤消操作,作为 CLR 中的重做信息。如果恢复中断,日志条目#56 将在重做阶段执行。
CLR 的目的是确保重新启动恢复过程并再次运行它总是会导致相同的结果。在重新运行的重做阶段运行 J=J-9 操作如何确保这一点?
有人可以向我解释一下吗?