Mysql原子性,持久性實現原理

事務的特性是原子性(Atomicity),一致性(Consistency),隔離性(Isolation),持久性(Durability),簡稱ACID,本文主要是說原子性和持久性。

1.redo log
mysql爲了提升性能不會把每次的修改都實時同步到磁盤中,而是先存到緩存中,然後再使用線程去做緩衝池和磁盤中的同步。這樣必然會存在問題,假如電腦突然停電,那麼沒有持久化到磁盤的信息必然會丟失,那麼持久性如何實現?
redo log叫重做日誌,當事務提交的時候會把所有的修改信息存放在redo log中,並且會把redo log持久化到磁盤,當電腦重啓後就會重新執行redo log的修改信息來恢復數據,這樣就能夠達到持久化的目的。

2.undo log
一個事務中所有的操作要麼全部成功提交,要麼全部失敗回滾,這就是事務的原子性。
undo log稱之爲回滾日誌,每條數據的變化(insert/update/delete)都會產生一條記錄,並且日誌持久化到磁盤,undo log用來記錄數據修改前的信息,比如說要插入一條記錄,那麼undo log就會記錄一條刪除該信息的語句,這樣你需要回滾的時候那麼undo log就會執行刪除你之前插入的那條記錄,達到沒有修改前的狀態,更新一個記錄也會生成一條sql記錄你更新前的字段狀態,從而實現了原子性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章