天天看點

MySQL的原子性和持久性如何保證?

原子性:undo log

事務是資料庫的邏輯工作機關,而且是必須是原子工作機關,對于其資料修改,要麼全部執行,要麼全部失敗復原。

  類似轉賬:A-100,B+100 這兩個操作屬于同一個事務, 要麼全部執行,要麼全部失敗復原。

  • undo log記錄了復原操作的日志,如果要撤銷,按照undo log的復原日志執行一遍就可以了(保證了原子性)

持久性:redo log

指一個事務一旦送出,它對資料庫中的資料的改變就應該是永久性的,即使此時再執行復原操作也不能撤消所做的更改。

  • 持久性就是用redo log,不是每次都寫入磁盤,而是定期通過redo log把資料刷入磁盤這樣即便斷電後,重新開機mysql還是可以恢複