如何定位Mysql中CPU占用高的查询语句

#编程技术 2022-05-05 17:11:00 | 全文 240 字,阅读约需 1 分钟 | 加载中... 次浏览

👋 相关阅读


今天 mysql 服务器突然 CPU 告警,记录一下问题查找的过程

图片alt

第一步查看具体是哪个线程占用CPU最高

1、在 Linux 中使用 top 命令找到 mysql 进程 PID

图片alt

2、指定进程 PID,找到占用 CPU 最高的线程 ID

top -H -p PID

图片alt

3、根据操作系统线程 ID 找到对应的 mysql 线程

SELECT
    *
FROM
    `performance_schema`.threads T
WHERE
    T.THREAD_OS_ID = 线程ID

4、根据返回结果中的 PROCESLIST_INFO 等信息,来判断其执行的语句是否可以进行优化

补充

如果觉得先从分析线程入手比较麻烦,也可以直接通过查询当前正在执行的查询入手

SELECT * FROM `information_schema`.`processlist` 
WHERE COMMAND != 'SLEEP' AND TIME > 1 ORDER BY TIME DESC

直接找出当前下大执行的查询,按执行时间排序,占用CPU高的查询往往耗时也比较长

Edit | Last updated on 2024-02-23 10:33:45




×