在基于日志的恢复中,为什么我们需要重做已提交的事务?

3
日志是一系列日志记录,用于记录数据库上的更新活动信息。每当事务启动、读取、写入或提交时,它都会在日志中注册自己的特定操作。因此,当从故障中恢复时,如果事务尚未提交,则需要撤消该事务,如果已经提交,则需要重新执行。我的疑问是关于这样做的逻辑。为什么我们需要重新执行已提交的事务呢?
参考资料:第19张幻灯片-http://codex.cs.yale.edu/avi/db-book/db6/slide-dir/PPT-dir/ch16.ppt

在深入讨论某个非常具体的问题之前,请先提供一些更多的背景信息。 - deceze
1
我们撤销未提交的内容,然后重做已提交的内容 - 这听起来一点也不对。 - stuartd
@stuartd 这是耶鲁大学教授所写的书中提到的内容。 - Raj Shah
@stuartd 是的,我提到了引用。 - Raj Shah
所以你做了,谢谢。不过这有点超出我的能力范围。这是指部分完成的交易吗? - stuartd
@stuartd 是的,在部分提交事务的情况下,这是有意义的,但它没有提到所提到的提交是部分提交。 - Raj Shah
2个回答

1

如果您认为这个问题很有意义,您能否也给它点个赞呢?谢谢。 - Raj Shah

0

对于一个事务T1,其所有日志记录都已输出到稳定存储器,但实际数据更新仍在主内存中,这种情况下可能会发生故障。如果此时发生故障,则重新执行此事务将确保所有由于故障而几乎丢失的更新现在都被写入稳定存储器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接