二進制日誌是寫操做是,首先寫入二進制日誌緩衝(binlog_cache)而後commit,再從binlog_cache寫入到binlog文件,默認大小爲32K,而binlog_cache是session級別的,也就是說實際binlog cache佔用內存數= connections * binlog_cache,可見若是connection太高,binlog_cache不宜設置的過大,若是binlog_cache設置的太小,不足以知足commit前transaction產生的binlog時,會引起mysql使用臨時文件來寫binlog_cache。那麼如何判斷當前session的binlog_cache設置的是否合理呢。能夠經過下面的命令查看。mysql
show variables like '%binlog_cache_szie%';(32K)sql
show global status like '%binlog_cache%';session
binlog_cache_use:內存中使用binlog_cache次數日誌
binlog_cache_disk_use:使用臨時文件(即磁盤)寫二進制日誌次數。blog
從上面的截圖能夠看出,mysql使用了5次臨時文件來寫入binlog_cache,說明32K的binlog_cache_size對當前mysql來講並不夠用。可根據系統實際的內存壓力來調整binlog_cache_size參數。內存