【发布时间】:2014-02-04 23:59:10
【问题描述】:
我们什么时候在数据库恢复中使用撤消和重做操作?例如,考虑以下考试中提出的问题(不是家庭作业)
考虑以下关于银行账户的两笔交易的日志序列,其中 初始余额 12000,将 2000 转入抵押贷款,然后申请 5% 的利息。
- T1 开始
- T1 B 旧=1200 新=10000
- T1 M 旧=0 新=2000
- T1 提交
- T2 开始
- T2 B 旧=10000 新=10500
- T2 提交
假设数据库系统在写入日志记录 7 之前崩溃。什么时候 系统重新启动,所有事务都进行撤消和重做操作?
我所知道的是,如果系统在提交写入日志后立即崩溃,并且在将缓冲区刷新到辅助存储之前,我们需要重做这些事务。但是这里系统在写入提交日志条目之前崩溃了。那么如果我们撤消记录 2 和 3,就足够了吗?
【问题讨论】:
-
为什么要撤消记录 2 和 3?他们参与了哪项交易?
-
@Damien_The_Unbeliever:我不太清楚这个概念。但是,如果我们不撤消这些事务,我们如何保持一致性。
-
@Damien_The_Unbeliever:你能回答一下吗
标签: transactions database recovery undo-redo