Mysql配置參數sync_binlog說明sql
MySQL提供一個sync_binlog參數來控制數據庫的binlog刷到磁盤上去。數據庫
默認,sync_binlog=0,表示MySQL不控制binlog的刷新,由文件系統本身控制它的緩存的刷新。這時候的性能是最好的,可是風險也是最大的。由於一旦系統Crash,在binlog_cache中的全部binlog信息都會被丟失。緩存
若是sync_binlog>0,表示每sync_binlog次事務提交,MySQL調用文件系統的刷新操做將緩存刷下去。最安全的就是sync_binlog=1了,表示每次事務提交,MySQL都會把binlog刷下去,是最安全可是性能損耗最大的設置。這樣的話,在數據庫所在的主機操做系統損壞或者忽然掉電的狀況下,系統纔有可能丟失1個事務的數據。可是binlog雖然是順序IO,可是設置sync_binlog=1,多個事務同時提交,一樣很大的影響MySQL和IO性能。雖然能夠經過group commit的補丁緩解,可是刷新的頻率太高對IO的影響也很是大。對於高併發事務的系統來講,「sync_binlog」設置爲0和設置爲1的系統寫入性能差距可能高達5倍甚至更多。安全
因此不少MySQL DBA設置的sync_binlog並非最安全的1,而是100或者是0。這樣犧牲必定的一致性,能夠得到更高的併發和性能。併發