文章目录
一、binlog_order_commits 简介
按照官方文档的解释,
binlog_order_commits
意思是 Whether to commit in same order as writes to binary log
即:提交的事务是否按照写入二进制日志 binlog 的顺序提交
在一些情况下关闭这个参数,可以获得性能上的一点提升。
二、binlog_order_commits 使用场景
Mysql binlog 提交一般被细化为3个处理阶段,每一阶段都有lock保护,
这3个阶段负责批量读取binlog并调用fsync,而后以同样顺序提交事务(可选);
1、Flush Stage
leader 会不断读取 flush queue 直到队列为空或者超时,
这样允许处理过程中新加入的事务也能得到及时处理;
leader 将排队的事务写入 binlog buffer,当队列为空时则进入下一阶段;
超时机制避免了事务长时间等待,
2、Sync Stage
调用 fsyc,一次刷新多个事务;
3、Commit Stage
提交事务,保证所有事务提交顺序同写入 binlog 一致 (innodb hot backup);
前面提到了,为了提升性能,也可选择不按次序提交;
这里就是通过 binlog_order_commits 控制的了。
三、binlog_order_commits 配置方法
1、mysql -uroot -hxxxip -Pxxx
show variables like “%binlog_order_commits%”;
set global binlog_order_commits=1/0 ;
2、vi /etc/my.cnf 修改 binlog_order_commits 为 1/0
参考文档:MySQL5.7 官方文档地址