乐趣区

关于性能:第41问组提交是怎样提高性能的

在图解系列中, 咱们介绍过组提交的概念 (https://mp.weixin.qq.com/s/_W…, 这次咱们通过试验来察看其作用

试验

照例宽油起一个数据库:

这里咱们调整了刷盘节奏, 使得景象会更显著一些. 同时, 双一的刷盘配置也是生产环境保持数据牢靠的举荐配置.

咱们进行一次压测:

开启压测的同时, 应用 pt-ioprofile 监控 IO :

咱们再进行一次压测, 这次将压力并发调大一倍:

压测的同时, 还是应用 pt-ioprofile 监控 IO 次数:

咱们能够看到:

在压力扩充一倍的状况下, 总体运行时长从 55s 进步到 67s (进步 20%), 但 MySQL 对各文件的 IO 次数并没有晋升太多 (此处以 ” 对 binlog 的刷盘次数 ” 为例, 进步了 1%)

咱们再更直观的看一下组提交的状况:

通过 binlog 中的 last_committed , 能够确定事务被分到了哪个提交组里

接下来别离剖析一下两次测试的事务数:

能够看到两次测试的提交组数进步了 25%, 事务数进步了 100%, 大部分事务都合并到了提交组里进行提交.

这就是组提交的作用: 将多个事务放在一个 IO 内进行提交, 以节俭 IO 次数

小贴士

如果大家应用 MySQL 8.0 做试验, 并将 binlog_transaction_dependency_tracking 配置成 WRITESET 或者 WRITESET_SESSION , 那依照 last_commit 字段辨认提交组的办法会不精确.


对于 MySQL 的技术内容,你们还有什么想晓得的吗?连忙留言通知小编吧!

退出移动版