大鹏一日同风起

大鹏一日同风起
记录日常,记录生活,记录时代
  1. 首页
  2. linux
  3. 正文

慢SQL排查方法  

2017年9月8日 82点热度 0人点赞 0条评论

慢 SQL 的一般排查步骤为:
1.定位慢 SQL;
2.定位性能损耗节点;
3.定位性能损耗原因并处理。
说明:排查过程中,建议通过 MySQL 命令行进行连接:mysql -hIP -PPORT -uUSER -pPASSWORD -c 。请务必加上 “-c”,防止 MySQL 客户端过滤掉注释(默认)从而影响 HINT 的执行。
定位慢 SQL
定位慢 SQL 一般有两种场景:历史信息可从慢 SQL 记录中查询;实时慢 SQL 执行信息可使用SHOW PROCESSLIST 指令展示。
查看慢 SQL 记录
执行以下指令查询慢 SQL Top 10: mysql> SHOW SLOW limit 10;
查看当前实时 SQL 执行信息: mysql>SHOW PROCESSLIST WHERE COMMAND != 'Sleep';
0004.png

定位性能损耗节点

从慢 SQL 记录或者实时 SQL 执行信息中定位到慢 SQL 后,可以执行 TRACE 指令跟踪该 SQL 的运行时间,以便定位瓶颈。TRACE 命令会实际执行 SQL,在执行过程中记录所有节点消耗的时间,并返回执行结果。
针对定位的慢 SQL,可以执行以下指令: mysql> trace select detail_url, sum(distinct price) from t_item group by detail_url;
TRACE 指令执行完毕后,可以执行 SHOW TRACE 命令查看结果,根据每个组件的时间消耗来判断慢 SQL 的瓶颈: mysql> SHOW TRACE;
SHOW TRACE 返回的结果中,根据 TIME_COST (单位毫秒)列可以判断哪个节点上的执行时间消耗大。同时可以看到对应的 GROUP_NAME (即 DRDS/RDS 节点),以及 STATEMENT 列信息(即正在执行的 SQL)。
将组装好的 HINT 及带 EXPLAIN 前缀的 STATEMENT 拼装成新的 SQL 并执行。EXPLAIN 指令不会真正执行,而只是显示该 SQL 的执行计划信息。出现了 Using temporary; Using filesort 现象,说明没有正确的使用索引从而导致执行缓慢。此时可以修正索引问题后重新执行。

标签: 暂无
最后更新:2017年9月8日

pbdatacn

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

归档

  • 2023 年 1 月
  • 2022 年 12 月
  • 2022 年 9 月
  • 2022 年 8 月
  • 2017 年 10 月
  • 2017 年 9 月
  • 2015 年 12 月
  • 2015 年 11 月
  • 2015 年 10 月
  • 2015 年 9 月
  • 2015 年 8 月
  • 2015 年 3 月
  • 2015 年 1 月
  • 2014 年 12 月
  • 2014 年 10 月
  • 2014 年 9 月
  • 2014 年 8 月
  • 2014 年 7 月

分类

  • Android
  • Docker
  • hadoop
  • linux
  • Redis
  • webservice
  • 文章
  • 未分类
  • 生活
  • 算法

COPYRIGHT © 2026 大鹏一日同风起. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

京ICP备14029030号-1