当前位置: 首页 > news >正文

dav_1_MySQL数据库排查cpu消耗高的sql

CPU消耗高sql定位

以下从2个维度进行分析,一个是当前cpu高占用排查,一个是历史sql占用高排查

一.当前cpu占用高排查

1 从os资源消耗逐步到mysql查询

 1.1 输入top  

然后按大P 使之进程按照消耗cpu排序

比如3889为mysql进程ID,接下来再用它查询出占用CPU多的线程。

1.2 查询进程中的线程
使用如下操作系统命令

top -H -p 3889

  1.3 根据线程ID去mysql查询出对应的SQL 比如1.2中看到的pid是6989

select 
a.user,
a.host,
a.db,
b.thread_os_id,
b.thread_id,
a.id processlist_id,
a.command,
a.time,
a.state,
a.info

from information_schema.processlist a,
     performance_schema.threads b

where 
    a.id = b.processlist_id 
    and 
    b.thread_os_id=6989;

即可定位到具体sql语句;其中,info列显示的SQL就是占用CPU较大的SQL,针对其进行优化即可。

二. 历史cpu高占用sql排查

1.performance_schema下视图定位

可通过performance_schema下面的视图进行跟踪查看,前提是 performance_schema = on 已经打开

show variables like 'performance_schema';

SELECT 
       DIGEST_TEXT,
       SCHEMA_NAME,
       COUNT_STAR ,  --执行次数
       SUM_TIMER_WAIT/1e12 AS total_exec_time_sec, -- 总执行时间(秒)
       AVG_TIMER_WAIT/1e12 AS avg_exec_time_sec,  -- 平均执行时间(秒)
       MAX_TIMER_WAIT/1e12 AS max_exec_time_sec    -- 最大执行时间(秒)
   FROM 
       performance_schema.events_statements_summary_by_digest
   ORDER BY 
       total_exec_time_sec DESC
   LIMIT 10;

2.通过slow_log.log 慢sql日志文件查看

确保慢sql记录功能开启

-- 查看当前配置
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';

相关文章:

  • C语言for循环嵌套if相关题目
  • Flink框架:批处理和流式处理与有界数据和无界数据之间的关系
  • 数据库视图讲解(view)
  • 8.3.1 MenuStrip(菜单)控件
  • 基于window11安装NACOS2.5.1的简介
  • Spark Core
  • 【Axure元件分享】移动端滑动拨盘地区级联选择器
  • 【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
  • 在Windows上安装Ubuntu24.04虚拟机
  • 全局端对端问题及应对方案
  • STM32F103VET6 芯片的主Flash 内存空间大小计算
  • 虚幻5的C++调试踩坑
  • 危险化学品标志速查手册(27个完整版)
  • 文件备份程序中的线程池管理:为何限制子线程数量?
  • Linux Makefile-概述、语句格式、编写规则、多文件编程、Makefile变量分类:自定义变量、预定义变量
  • feign 调用返回值为void接口,抛出了异常也不报错问题处理
  • 【C++】模板进阶
  • 编程中,!! 双感叹号的理解
  • 华为数字芯片机考2025合集1已校正
  • ECMAScript 6 新特性(一)
  • 西平网站建设/中国舆情在线
  • 做网站一天能赚多少钱/seo博客写作
  • 网站建设毕业实践设计报告/重庆seo管理平台
  • discuz论坛网站做的门户/上海培训机构有哪些
  • 公司网站域名注册可以用个人身份证吗/软文写作什么意思
  • 衡水大型网站建设/软件推广方案经典范文