为什么数据库可以使用逻辑日志进行撤销操作而不考虑不一致性

时间:2012-12-25 02:56:05

标签: database recovery undo-redo aries

对于单个数据库操作,它可能会影响多个页面。例如,插入操作可能导致页面拆分。因此,由于考虑不一致,数据库不使用逻辑日志进行重做操作(一个操作影响两个页面,系统崩溃时只有一个页面被刷新到数据中)。他们总是使用生理日志或物理日志进行重做操作。 但是在ARIES算法或某些数据库(例如mysql)中,它们使用逻辑日志进行撤销,该操作可能会影响多个页面。他们为什么能这样做?当只有一些受撤消操作影响的页面刷新到磁盘并且系统再次崩溃时,它们如何保证回滚的正确性?

1 个答案:

答案 0 :(得分:0)

Aries也会记录恢复操作,因此恢复期间崩溃的问题(您的上一个问题)与撤消逻辑日志记录的问题是正交的。操作可能影响多个页面这一事实并不会导致一致性问题。

我认为你理论上也可以使用逻辑日志进行重做("重做和撤消操作可以逻辑地执行"在原版Aries文件中),但物理上最大的优点是它&# 39; s幂等。 UNDO协议确保操作不会执行多次。

逻辑日志有一些优点(与物理相比):

  • 节省空间
  • "能够执行逻辑撤消操作可以支持更高级别的并发性"