天天看點

14.2.4 InnoDB Redo Log

<pre name="code" class="sql">14.2.4 InnoDB Redo Log

14.2.4.1 Group Commit for Redo Log Flushing


redo log 是一個基于磁盤資料結構用于crash recovery 來校準被寫入的資料 在不完整的事務。


在正常的操作中, redo log 編碼請求來改變InnoDB 表資料,可能是從SQL語句或者low-leble API請求。


修改不完成修改資料檔案在一個意外的關機 在初始化會重做,

之前的連接配接被關閉。



預設的, redo log 實體的表現為磁盤的一組檔案, 命名為ib_logfile0 and ib_logfile1. 

jrhdpt01:/data01/mysql# ls -ltr ib_logfile*
-rw-r--r-- 1 root  root  100669440 Oct 28 12:28 ib_logfile.tar
-rw-rw---- 1 mysql mysql 536870912 Nov 22 14:07 ib_logfile1
-rw-rw---- 1 mysql mysql 536870912 Nov 23 09:27 ib_logfile0


MySQL 寫重做日志以一個循環的方式。 redo log裡的記錄是按受影響的記錄的編碼。



redo log 日志的磁盤配置使用以下的選項:

1.innodb_log_file_size:  定義redo log 檔案的大小。預設的,

redo log files 是48MB。  log files的結合的大小是(innodb_log_file_size * innodb_log_files_in_group) 

2.innodb_log_files_in_group: log files 的日志組。預設是建立2個檔案 ib_logfile0 and ib_logfile1.


3.

14.2.4.1 Group Commit for Redo Log Flushing 


InnoDB , 像任何其他的ACID-相容的資料庫引擎,flushes 一個事務的redo log 在它送出前。


InnoDB 使用group commit 功能來送出把多個這樣的flush 請求合并在一起來避免每個送出都flush.


在group commit,InnoDB 執行一個單獨的寫日志檔案來執行一個commit 動作 對于多個使用者事務