每當事務提交,例如autocommit模式下單條語句提交,或者普通模式下MySQL收到commit語句,MySQL將按以下步驟進行:緩存
先把整個事務寫入binary log,spa
然後纔將事務提交到InnoDB。日誌
注:寫binary log不是寫磁盤,將binary log寫磁盤由系統變量sync_binlog決定。具體來講,即每向binary log寫入sync_binlog次,即刷寫一次磁盤。事務
二進制日誌緩存it
binary log cache變量
存在:每條鏈接各一個,大小由系統變量binlog_cache_size決定。date
做用:一個事務作出的修改,當小於binlog_cache_size時,全部修改內容存入binary log cache;當大於binlog_cache_size時,內容存入磁盤臨時表。二進制
關聯:co
二進制日誌工做過程:磁盤
對非事務性表的修改,在語句執行結束後,即寫入binary log。
在事務內部,對InnoDB表的全部修改,如insert、delete、update,存入binary log cache,