1. 程式人生 > 實用技巧 >MYSQL事務的日誌

MYSQL事務的日誌

1.事務日誌

1.redo log

redo,顧名思義“重做日誌”,是事務日誌的一種

作用:
     在事務ACID過程中,實現的是“D”持久化的作用。

     REDO:記錄的是,記憶體資料頁的變化過程

     特性:WAL(Write Ahead Log)日誌優先寫
文字描述流程:
            # 修改
            1)首先將表中id=1的行所在資料頁載入到記憶體中data buffer page
            2)MySQL例項在記憶體中將id=1的資料頁改成id=2
            3)id=1變成id=2的變化過程會記錄到,redo記憶體區域,也就是redo buffer page中
            4)當敲下commit命令的瞬間,MySQL會將redo buffer page寫入磁碟區域redo log
            5)當寫入成功之後,commit返回ok

           # 查詢
           1.首先將表中id=1的行所在資料頁載入到記憶體中data buffer page
           2.將redo log中id=1變成id=2的變化過程取載入到redo buffer page
           3.通過data buffer page和redo buffer page得到一個結果

2.undo log

undo,顧名思義“回滾日誌”,是事務日誌的一種

作用:
     在事務ACID過程中,實現的是“A”原子性的作用。當然CI的特性也和undo有關

3.redo和undo的儲存位置

#redo位置
[root@db01 data]# ll /application/mysql/data/
-rw-rw---- 1 mysql mysql 50331648 Aug 15 06:34 ib_logfile0
-rw-rw---- 1 mysql mysql 50331648 Mar  6  2017 ib_logfile1

#undo位置
[root@db01 data]# ll /application/mysql/data/
-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34 ibdata1
-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34 ibdata2