现在我在一个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中消失。
希望你能帮忙。我真的很感激。
答案 0 :(得分:1)
解决方案很简单。
当你使用sync_binlog = 1时,发生的事情就像日志也被写入磁盘而不使用文件系统支持。但是只有被调用的事务才会进入日志。
但是现在你出现了sync_binlog=0
,这意味着你不想在磁盘上记录已经过的事务,这意味着你依赖于操作系统的文件系统。
因此,如果您的自动提交已关闭,那么您只会在日志中获取已配置的事务,否则所有事务(无论是否已提交)都将进入日志。
因此,您可能会使用带有autocommit'on'的mysql,并且所有事务都会进入日志,而您只会进入速度缓慢但未提交的事务。
希望这会有所帮助