首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解事务恢复

理解事务恢复
EN

Database Administration用户
提问于 2017-04-27 06:49:56
回答 1查看 2K关注 0票数 4

在下面的参考文献中,有一个算法概述了使用redo和undo的事务恢复算法。该算法如下:

代码语言:javascript
复制
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必须在重做列表中。我是不是遗漏了什么?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-04-27 07:24:25

如果你从头到尾看一遍幻灯片,你会发现解释是相当准确的。

  1. 数据库的恢复开始。

所描述的幻灯片显示的是当垂直轴位于检查点时的情况。

  1. 那时,T2和T3被放入撤消队列中。
  2. 向前移动(在参考中),检查时间(垂直轴)向前移动并到达T4的开始。事务T4被放入撤消队列中。
  3. 向前移动(在参考中),检查时间(垂直轴)向前移动并到达T5的开始。事务T5被放入撤消队列中。

现在您在撤销队列中拥有了所有四个事务( T1、T2、T3、T4 )。

  1. 进一步向前移动(在参考中),检查时间(垂直轴)向前移动,并到达T2的末尾。事务T2被放入重做队列中。
  2. 向前移动(在参考中),检查时间(垂直轴)向前移动,并到达T4的末尾。事务T4被放入重做队列中。

事务T3和T5位于撤消队列中。事务T2和T4在重做队列中。

进一步向前移动(在参考中),检查时间(垂直轴)向前移动并到达故障。

T3和T5是撤销-ne,T2和T4是REDO-ne (或重新应用)。

数据库现在处于一致状态.

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/172122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档