sync_binlog = 0影响性能,但sync_binlog = 1效果很好

时间:2012-11-29 02:26:56

标签: mysql

现在我在一个MySQL实例中发现了一些奇怪的东西。

backgroup 我们使用SSD来存储数据文件,但binlog文件存储在SAS磁盘中 sync_binlog = 0 TPS 4000插入+每秒更新 max_binlog_size 500M

当MySQL创建新的binlog文件时,我们发现一些transcations commit语句会被写入slow.log

当我设置sync_binlog 0-> 2000-> 1000-> 200-> 100时。 最后,当sync_binlog = 0时,commit语句在slow.log中消失。

希望你能帮忙。我真的很感激。

1 个答案:

答案 0 :(得分:1)

解决方案很简单。 当你使用sync_binlog = 1时,发生的事情就像日志也被写入磁盘而不使用文件系统支持。但是只有被调用的事务才会进入日志。 但是现在你出现了sync_binlog=0,这意味着你不想在磁盘上记录已经过的事务,这意味着你依赖于操作系统的文件系统。 因此,如果您的自动提交已关闭,那么您只会在日志中获取已配置的事务,否则所有事务(无论是否已提交)都将进入日志。

因此,您可能会使用带有autocommit'on'的mysql,并且所有事务都会进入日志,而您只会进入速度缓慢但未提交的事务。

希望这会有所帮助