每当事务提交,例如autocommit模式下单条语句提交,或者普通模式下MySQL收到commit语句,MySQL将按如下步骤进行:
先把整个事务写入binary log,
而后才将事务提交到InnoDB。
注:写binary log不是写磁盘,将binary log写磁盘由系统变量sync_binlog决定。具体来说,即每向binary log写入sync_binlog次,即刷写一次磁盘。
二进制日志缓存
binary log cache
存在:每条连接各一个,大小由系统变量binlog_cache_size决定。
作用:一个事务做出的修改,当小于binlog_cache_size时,所有修改内容存入binary log cache;当大于binlog_cache_size时,内容存入磁盘临时表。
关联:
二进制日志工作过程:
对非事务性表的修改,在语句执行结束后,即写入binary log。
在事务内部,对InnoDB表的所有修改,如insert、delete、update,存入binary log cache,