1. 程式人生 > >資料庫的REDO和UNDO機制

資料庫的REDO和UNDO機制

UNDO和REDO機制

redo undo機制是在資料庫引擎曾實現的。

undo機制

UNDO機制如下:
假設有A、B兩個資料,值分別為1,2。
A.事務開始.
B.記錄A=1到undo log.
C.修改A=3.
D.記錄B=2到undo log.
E.修改B=4.
F.將undo log寫到磁碟。
G.將資料寫到磁碟。
H.從磁碟檔案中刪除之前的undo記錄(事務提交)
核心在於先寫undo到磁碟,再寫資料。
這樣,如果系統在GH之間崩潰,重啟系統只需要按照undo重寫即可。這個機制保證了事務的原子性,缺點在於每次日誌提交都要更新undo日誌,存在大量的磁碟IO。

redo機制

引入了redo+undo的機制。
A.事務開始.
B.記錄A=1到undo log.
C.修改A=3.
D.記錄A=3到redo log.
E.記錄B=2到undo log.
F.修改B=4.
G.記錄B=4到redo log.
H.將redo log寫入磁碟(事務提交)
I.放棄該事務的undo日誌

在事務提交前任何過程中任何時刻決定回滾,先吧undo寫入磁碟,再把redo寫入磁碟。之所以不採用放棄redo日誌的方法,是因為redo日誌為了提高效率,設計為只能追加。
這樣,系統崩潰後,只需要先執行redo log,後執行undo log就可以。