接着上篇,如今開始看看各個模塊,文檔上的內容有點弱, 詳細的能夠看看,《MySQL技術內幕(InnoDB存儲引擎)》這本書的第七章!html
Redo Log是基於磁盤的數據結構,用來恢復因爲未完成事務形成的數據修改。默認狀況下,Redo Log在ib_logfile0和ib_logfile1這個兩個文件中,m默認大小爲5MB。事務的執行,會向redo log中記錄相應數據頁的修改。mysql
Redo Log用保證事務的持久性。Redo Log一般是物理日誌,記錄的是數據頁的物理修改。sql
redo log size = innodb_log_files_in_group * innodb_log_file_size數據庫
Redo Log:redo log buffer 、redo log file數據結構
Redo Log持久化:redo log buffer -> os buffer -> redo log filespa
InnoDB記錄了數據文件的物理修改,而且保證日誌先行,即WAL(write-ahead logging)。日誌
LNS(log sequence number)記錄日誌序號。htm
Redo Log以順序的方式寫入文件,寫滿時則回溯到第一個文件,進行覆蓋。事務
Redo Log在存儲引擎層產生,是物理格式日誌;bin log在數據庫的上層產生,是邏輯日誌,不管什麼存儲引擎都會產生。內存
經過innodb_flush_log_at_trx_commit控制,值有0、一、2,默認爲1
參考Log Block,這篇文章的圖描述的很清楚。
redo log基於頁存儲,默認大小爲16kb,由多個log block組成,一個log block大小爲512字節。
參考LSN
讓redo log files足夠大,但不能太大
增長log buffer大小
配置innodb_log_write_ahead_size配置選項,以免「讀寫」。
兩個參考文章: