记一次线上超时问题处理
背景
上午前端业务部门同事突然反馈系统某个功能无法使用,并且配上了截图
于是着手处理
问题分析
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)
结束
到此问题解决。
作者:猫与鱼11
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。