Mysql-事務與Redo Log、Undo Log

一 Undo Log

Undo Log是爲了實現事務的原子性,在MySQL數據庫InnoDB存儲引擎中,還用Undo Log來實現多版本併發控制(簡稱:MVCC)。數據庫

1   事務的原子性(Atomicity)

事務中的全部操做,要麼所有完成,要麼不作任何操做,不能只作部分操做。若是在執行的過程當中發生了錯誤,要回滾(Rollback)到事務開始前的狀態,就像這個事務歷來沒有執行過。併發

2   原理

Undo Log的原理很簡單,爲了知足事務的原子性,在操做任何數據以前,首先將數據備份到一個地方(這個存儲數據備份的地方稱爲Undo Log)。而後進行數據的修改。若是出現了錯誤或者用戶執行了ROLLBACK語句,系統能夠利用Undo Log中的備份將數據恢復到事務開始以前的狀態。spa

除了能夠保證事務的原子性,Undo Log也能夠用來輔助完成事務的持久化。事務

3   事務的持久性(Durability)

事務一旦完成,該事務對數據庫所作的全部修改都會持久的保存到數據庫中。爲了保證持久性,數據庫系統會將修改後的數據徹底的記錄到持久的存儲上。ci

1)    用Undo Log實現原子性和持久化的事務的簡化過程

假設有A、B兩個數據,值分別爲1,2。it

A.事務開始.原理

B.記錄A=1到undo log.數據

C.修改A=3.備份

D.記錄B=2到undo log.co

E.修改B=4.

F.將undo log寫到磁盤。

G.將數據寫到磁盤。

H.事務提交

相關文章
相關標籤/搜索