我们何时在数据库恢复中使用撤消和重做操作?例如,考虑考试中提出的以下问题(而不是作业)
考虑银行帐户上两个交易的以下日志序列 初始余额12000,即2000转入抵押付款然后申请 5%的利息。
假设数据库系统在写入日志记录7之前崩溃。什么时候 系统重新启动,所有事务都进行撤消和重做操作?
我所知道的是,如果系统在提交写入日志之后立即崩溃,并且在将缓冲区刷新到辅助存储之前,我们需要重做这些事务。但是在这里,系统在写入提交的日志条目之前崩溃了。因此,如果我们撤消记录2和3,它就足够了吗?
答案 0 :(得分:0)
如果数据库在第7点崩溃,则直到第4点(包括)的所有内容都已存在于磁盘上。这是commit提供的保证(假设没有使用像async commit这样的特殊功能)。
在恢复期间,基本上恢复了第4点之后的状态。