记一次线上超时问题处理

背景

上午前端业务部门同事突然反馈系统某个功能无法使用,并且配上了截图

于是着手处理

问题分析

1、英文的意思概括下来就是接口超时,60秒没有拿到响应结果,超时报错

2、本地连上生产环境重现了问题,发现是sql问题,执行很慢,一个计数sql执行了35s,有点离谱

3、查看执行计划,有两次全表扫描,没有命中任何索引,这里全表扫描的原因是join的字段上没有索引,只能从头扫到尾,效率低就正常了

问题处理

既然知道是索引的问题,那就加上索引吧

alter table ys_user add index index_superior_id(superior_id);
alter table ys_user_gift add index index_subordinate_id(subordinate_id);
alter table ys_user_gift add index index_user_id(user_id);

加入索引之后的执行时间只要0.137s

执行计划也恢复了正常(一般sql优化的要求是type至少要达到range)

结束

到此问题解决。

posted @ 2024-03-13 17:08  猫与鱼11  阅读(9)  评论(0编辑  收藏  举报