zoukankan      html  css  js  c++  java
  • [MySQL] Group Commit理解

    简单的方法理解MySQL Group Commit原理

    一个摆渡将乘客从A点传输到B点

    MySQL 5.0 行为

    在MySQL 5.0中,摆渡会在A点按顺序搭载乘客,并且传送到B点。A点和B点的来回行程大约需要10min时间,因此在摆渡过程中一些乘客已经到达A点。这样,在摆渡返回A点后,只会按顺序搭载下一个乘客,其他的都在排队等待中。

    MySQL 5.6 行为

    在MySQL 5.6中,摆渡将会搭载A点队列里的所有乘客,并且传送他们到B点。每一次摆渡返回A点搭载乘客时,他会统计所有在等待的人,把他们传送到B点。

    在现实情况下,当有很多乘客等待的时性能是比较好的。

    在5.6中,group commit是默认的。

    MySQL 5.7 行为

    在MySQL 5.7中的行为和5.6类似,会搭载所有A点等待的乘客,并且传送到B点。但有很明显的性能提升!

    当摆渡返回A点,搭载等待乘客时,可以配置等待一小会,以便新的乘客到达。

    例如:如果知道A和B点的往返行程时间是10min,出发前在A点为什么不多等待30s呢?这或许能节省摆渡的往返次数,提升能够传送乘客的总数量。

    相关配置是:

    binlog-group-commit-sync-delay 微妙延迟

    binlog-group-commit-sync-no-delay-count 停止等待前的等待事务数

    总结

    很明显乘客就是事务,摆渡就是昂贵的fsync操作。很重要一点是只有一次摆渡操作,一系列有序的二进制日志。

  • 相关阅读:
    抽签问题及优化
    P1020
    p1852ants
    1,三角形
    TG3
    如何看懂一篇题解
    Unsupported major.minor version 51.0 错误解决方案
    weblogic初学笔记2-在Linux上部署项目
    一块移动硬盘怎样兼容Mac和Windows系统,并且可以在time machine上使用
    org.hibernate.HibernateException: connnection proxy not usable after transaction completion
  • 原文地址:https://www.cnblogs.com/renolei/p/4448433.html
Copyright © 2011-2022 走看看