为什么undo也需要redo

from : http://www.34hap.com/database/undoredo/why_undo_need_redo.html

一个很小的问题,为什么undo也需要redo?
先看需要redo中的undo来进行实例恢复的场景,肯定包括两点:

  • 事务未commit,故需要undo来进行回滚。
  • Undo块未刷入到disk,故需要redo来重构undo块。

再对这个场景进行细化:
1. Undo块和redo块都未刷入disk,这时instance crash没有任何问题,不需要进行前滚和回滚。
2. Undo块未刷入disk,数据块刷入disk,如果这个时候instance crash,就需要进行前滚和回滚。
Undo也需要redo就是为了防止第2点的出现,另外要提到的是,由于undo的redo先于数据块的redo产生,故当数据块的redo刷入disk时,undo的redo必然也已经刷入disk。这样就保证了前滚和回滚都能正常进行。

posted @ 2011-10-10 17:14  jianggc.zj  阅读(343)  评论(0)    收藏  举报