一条SQL走错索引导致数据库出现超时问题排查过程

本文揭秘了一次项目中数据库请求超时的追踪过程,从监控、慢查询、死锁日志到执行计划,发现一个错误的索引选择导致了全表扫描和大量锁等待,最终引发连接数飙升和业务延迟。

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

现象

最近刚接手的一个项目,在某天中午12点30多分接到开发反馈,他们业务请求数据库的时候,出现了大量请求超时问题,虽然之前也有过,但是这次持续很久,大概两分钟多又恢复好了。
数据库版本8.0.22。隔离级别RR。

初步分析

接到问题,不着急,先看一下监控:
在这里插入图片描述
在这里插入图片描述
从监控图上看可以看到在对应的12点36分左右的时候出现了连接数开始飙高,以及这个点出现了少量的慢sql.
查看的对应时间点的慢查询日志,查到对应时刻有如下的慢查询sql:
在这里插入图片描述
这里可以看到这个慢查询从12点36分执行了155s。
这个SQL按理说不会慢,因为(uid,msg_id)是一个uk索引,id是主键。
然后因为出现超时,所以猜测是因为锁导致的超时原因吗?
但是由于新项目没有很深层的关于锁相关监控,只能去查询存储引擎信息
Show engine innodb status\G; 这个只能看到最近一次的死锁信息。要想看到完整的死锁信息 建议打开innodb_print_all_deadlocks,该参数会将

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值