0

补偿日志的重做信息对应于日志条目的撤消信息,这使得在撤消阶段必须创建它们。

在我看来,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 操作如何确保这一点?

有人可以向我解释一下吗?

4

1 回答 1

0

您需要将更改应用于数据库。您可以进行更改并记录在事务中止时如何撤消它,或者您可以记录您需要执行的操作 (REDO) 并查阅数据库和重做日志以找出数据库的当前状态。另见http://ariel.its.unimelb.edu.au/~yuan/Ingres/clr.html

于 2021-09-10T17:44:29.193 回答