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

本文通过实验展示了组提交在MySQL中的作用,调整刷盘节奏后,即使压力并发加倍,事务提交的IO次数仅提升1%,说明组提交能有效节省IO操作。实验对比了两次压测,显示事务数增加100%,但大部分事务合并提交,减少了单独IO次数。组提交是优化数据库性能的重要手段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在图解系列中, 我们介绍过组提交的概念 (https://mp.weixin.qq.com/s/_WVE1xtGdtXEcwkTf7j_rA), 这次我们通过实验来观察其作用

实验

照例宽油起一个数据库:

这里我们调整了刷盘节奏, 使得现象会更明显一些. 同时, 双一的刷盘配置也是生产环境保持数据可靠的推荐配置.

我们进行一次压测:

开启压测的同时, 使用 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 的技术内容,你们还有什么想知道的吗?赶紧留言告诉小编吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值