MySQL 数据库响应延迟问题分析一例(例2)

Posted 渔夫数据库笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 数据库响应延迟问题分析一例(例2)相关的知识,希望对你有一定的参考价值。

1.版本

数据版本:

阿里云 PolarDB(目前使用的版本是基于 mysql 8.0.13 研发)

2.问题描述

业务侧报告说,每天早上他们有个表insert操作都会有响应时间异常的现象(响应时间能达到3s)。

3.问题分析

3.1 业务侧/binlog 日志分析

业务侧日志如下截图:

 #上图中2021-11-02 09:18:36:725 是业务侧收到数据库响应的时间

# 上图是业务侧对应的insert sql 在binlog中解析出来的记录。我们看到该sql确实执行了3s,所以可以确认是sql执行慢了,导致业务侧收到响应出现延迟,下面来看看一个简单的insert(插入一条记录),为什么耗时3s才执行完成

3.2 阿里云协助分析

因为是用的是阿里云的产品,很多信息都看不到,请求阿里云协助分析问题。应阿里云侧要求需要打开sql洞察功能(注,这个功能开启要收费。这里小吐槽一下,这个功能是很好,但是作为客户,我们花钱开通以后只是看到了部分数据,只有他们自己的后台工程师才有权限看到更多更全面的数据)

先说阿里云跟踪几天后,给出的结论,他们在后台观察到,在出问题的时间点,总是伴随着一些执行批量数据插入的sql(单条sql 插入五万多条记录)。这些大批量的insert导致那些后续那些单条insert在获取 binlog 相关 mutex锁时出现等待,从而导致那些简单sql执行时间异常。阿里云侧给出的说明截图如下:

 

 3.3 根据阿里云的结论对binlog进行统计分析

grep -i "exec_time=" mysql-bin.026572.txt|grep "211102  9:18:33"

#统计业务侧出现响应延迟的对应sql执行时间点下,binlog中sql操作的执行时间,我们看到在2021-11-02 09:18:33.xxx 时间点之后所有所有09:18:33 这个时间点binlog中sql的执行时间都是3s。继续统计09:18:34 和 09:18:35 两个时间binlog中sql执行时间发现 09:18:34 所有的sql执行时间都是2s,09:18:35 binlog中所有sql执行时间都是1s,09:18:36 恢复正常。所以影响时间在3s左右。

 

 

以上是关于MySQL 数据库响应延迟问题分析一例(例2)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 数据库响应延迟问题分析一例(例2)

MySQL 数据库响应延迟问题分析一例(例2)

MySQL 数据库响应延迟问题分析一例(例1)

MySQL 数据库响应延迟问题分析一例(例1)

MySQL 复制夯住一例排查以及原理探讨

MySQL锁等待超时的解决路径