sync_binlog=1

 

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。it

这样牺牲必定的一致性,能够得到更高的并发和性能。class

相关文章
相关标签/搜索