Transactions 数据库恢复中的撤消和重做

Transactions 数据库恢复中的撤消和重做,transactions,database,recovery,undo-redo,Transactions,Database,Recovery,Undo Redo,何时在数据库恢复中使用撤消和重做操作?例如,考虑在考试(不是家庭作业)中提出的下列问题: 考虑以下银行帐户上两个事务的日志序列,其中 初始余额12000,即将2000转为抵押付款,然后申请 5%的利息 T1启动 T1 B旧=1200新=10000 T1米旧=0新=2000 T1提交 T2起点 T2 B旧=10000新=10500 T2提交 假设数据库系统在写入日志记录7之前崩溃。什么时候 系统重新启动,所有事务都进行撤消和重做操作 这里我所知道的是,如果在提交写入日志之后,在将缓冲区刷新到辅助存

何时在数据库恢复中使用撤消和重做操作?例如,考虑在考试(不是家庭作业)中提出的下列问题: 考虑以下银行帐户上两个事务的日志序列,其中 初始余额12000,即将2000转为抵押付款,然后申请 5%的利息

  • T1启动
  • T1 B旧=1200新=10000
  • T1米旧=0新=2000
  • T1提交
  • T2起点
  • T2 B旧=10000新=10500
  • T2提交
  • 假设数据库系统在写入日志记录7之前崩溃。什么时候 系统重新启动,所有事务都进行撤消和重做操作


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

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


    恢复期间,基本上恢复第4点之后的状态

    为什么要撤消记录2和记录3?他们是哪笔交易的一部分?@Damien_不信者:我不太清楚这个概念。但如果我们不撤销这些交易,我们如何保持一致性呢?@Damien_异教徒:你能提供一个答案吗