Database 为什么数据库可以在不考虑不一致性的情况下使用逻辑日志进行撤消操作

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

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

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

我认为从理论上讲,您也可以使用逻辑日志进行重做(“重做和撤消操作可以逻辑执行”,在最初的Aries论文中),但物理日志最大的优点是它是幂等的。撤消协议确保操作不会执行多次

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

  • 节省空间
  • “能够执行逻辑撤消允许支持更高级别的并发”