本文也有英文版:English version。
在使用和运维MySQL的过程中你一定碰到过下面这种奇怪的慢SQL。
- 平时执行很快的INSERT语句,竟然执行了
1.3s,并且慢SQL记录里也没有看到长时间的锁等待。 - 多语句事务的所有语句都已经执行完了,但是COMMIT语句竟然执行了
1.3s。
当这种情况出现时,最有可能的就是有大事务在提交。以下是一个模拟测试的结果,我们用Sysbench来模拟正常的业务,然后在后台每5秒执行一个大的UPDATE,可以看到大的UPDATE会严重的影响业务的性能。
根因分析
上图展示了两个事务的执行过程:
- 事务执行分为两个阶段,执行阶段和提交阶段。 …