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';
相关推荐
聪聪那年221 分钟前
Oracle 11g windows 10安装与卸载
数据库·oracle
故渊ZY3 分钟前
从入门到精通:MySQL 核心技术与业务落地实践
mysql
计算机毕设匠心工作室12 分钟前
【python大数据毕设实战】全面皮肤病症状数据可视化分析系统、Hadoop、计算机毕业设计、包括数据爬取、数据分析、数据可视化、机器学习、实战教学
后端·python·mysql
前端之虎陈随易16 分钟前
MoonBit内置数据结构详解
数据结构·数据库·redis
云和恩墨35 分钟前
AI驱动的Oracle SQL优化:从经验依赖到智能协同的三大价值
人工智能·sql·oracle·深度优先·dba
qq_124987075344 分钟前
基于SpringBoot+vue的小黄蜂外卖平台(源码+论文+部署+安装)
java·开发语言·vue.js·spring boot·后端·mysql·毕业设计
小二·1 小时前
Spring框架入门:TX 声明式事务详解
java·数据库·spring
万邦科技Lafite1 小时前
一键获取淘宝店铺所有商品信息,实时监控商品数据
开发语言·数据库·python·api·开放api·电商开放平台·淘宝开放平台
SUPER52661 小时前
运维hbase服务重启,导致应用查询异常 hbase:meta
运维·数据库·hbase
烤麻辣烫1 小时前
黑马程序员苍穹外卖后端概览
xml·java·数据库·spring·intellij-idea