二进制日志组提交(Binary Log Group Commit)

原创
2016/04/20 11:32
阅读数 585

mysql 5.5 group commit的bug,开启binary log不能使用组提交,性能差800%,mariadb 5.3实现binary log group commit

  • BLGC特性(mariadb 5.3、mysql 5.6)

    • 设置innodb_flush_log_at_trx_commit=1sync_binlog=1,确保数据持久性,crash后恢复到一致性状态
    • 一次fsync刷新多个并发事务的二进制日志到磁盘
    • 在commit提交事务时,只需要做两次fsync操作(之前为3次,commit阶段不需要做fsync),不丢失提交持久性(如果在commit之前发生crash,下次服务重启时从binlog进行恢复,对比xid信息)
      • mariadb的innodb_flush_log_at_trx_commit=3 会做3次fsync操作,能保证提交事务持久性,但是会造成binlog和innodb的一致性问题
      • innodb_flush_log_at_trx_commit=1 但是sync_binlog=0,不能担保持久性的,因crash时binlog的事件将丢失
  • 性能压测对比

输入图片说明

展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部