Mysql binlog_order_commits







一、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 官方文档地址




猜你喜欢

转载自blog.csdn.net/weixin_44648216/article/details/113850136