【问题标题】:Undo and Redo in Database Recovery数据库恢复中的撤消和重做
【发布时间】:2014-02-04 23:59:10
【问题描述】:

我们什么时候在数据库恢复中使用撤消和重做操作?例如,考虑以下考试中提出的问题(不是家庭作业)

考虑以下关于银行账户的两笔交易的日志序列,其中 初始余额 12000,将 2000 转入抵押贷款,然后申请 5% 的利息。

  1. T1 开始
  2. T1 B 旧=1200 新=10000
  3. T1 M 旧=0 新=2000
  4. T1 提交
  5. T2 开始
  6. T2 B 旧=10000 新=10500
  7. T2 提交

假设数据库系统在写入日志记录 7 之前崩溃。什么时候 系统重新启动,所有事务都进行撤消和重做操作?

我所知道的是,如果系统在提交写入日志后立即崩溃,并且在将缓冲区刷新到辅助存储之前,我们需要重做这些事务。但是这里系统在写入提交日志条目之前崩溃了。那么如果我们撤消记录 2 和 3,就足够了吗?

【问题讨论】:

  • 为什么要撤消记录 2 和 3?他们参与了哪项交易?
  • @Damien_The_Unbeliever:我不太清楚这个概念。但是,如果我们不撤消这些事务,我们如何保持一致性。
  • @Damien_The_Unbeliever:你能回答一下吗

标签: transactions database recovery undo-redo


【解决方案1】:

如果数据库在第 7 点崩溃,则直到第 4 点(包括)之前的所有内容都已在磁盘上。这就是提交提供的保证(假设没有使用异步提交等特殊功能)。

在恢复过程中,第 4 点之后的状态基本上被恢复。

【讨论】:

    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2011-06-14
    • 2011-10-22
    • 1970-01-01
    • 2011-11-14
    • 2011-05-31
    相关资源
    最近更新 更多