您的位置:首页 > 娱乐 > 明星 > 孝感市最新消息_可玩儿小程序可以加盟么_什么是网络营销推广_武汉大学人民医院地址

孝感市最新消息_可玩儿小程序可以加盟么_什么是网络营销推广_武汉大学人民医院地址

2025/1/3 4:22:51 来源:https://blog.csdn.net/qq_38526245/article/details/144430983  浏览:    关键词:孝感市最新消息_可玩儿小程序可以加盟么_什么是网络营销推广_武汉大学人民医院地址
孝感市最新消息_可玩儿小程序可以加盟么_什么是网络营销推广_武汉大学人民医院地址

mysql cpu占用率飙升问题排查
一开始我们就会想到慢sql

//开启
SET GLOBAL slow_query_log = 'ON';
//设置慢sql时间,单位秒
SET GLOBAL long_query_time = 1;
//确认是否生效
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';
//关闭(一般没出问题就会关闭,出了问题就开启排查,当然资源允许情况,可以一直开着)
SET GLOBAL slow_query_log = 'OFF';
//慢sql文件
SHOW VARIABLES LIKE 'slow_query_log_file'; 

永久生效就得改配置文件了,因为是排查问题,临时用一下就可以

如果没有发现慢sql记录,则需要换个思路,类似于程序while(true)执行,也是会导致cpu飙升的

//查看当前正在执行的查询
SHOW PROCESSLIST;//查看线程状态
SELECT * FROM information_schema.PROCESSLIST WHERE COMMAND != 'Sleep';//查询消耗cpu较高的sql
SELECT digest_text, COUNT_STAR AS exec_count, SUM_TIMER_WAIT/1000000000000 AS total_time_s,AVG_TIMER_WAIT/1000000000000 AS avg_time_s
FROM performance_schema.events_statements_summary_by_digest
ORDER BY total_time_s DESC
LIMIT 10;

找到消耗cpu的sql,然后可以使用explain分析

比如我这边的sql,发现explain结果中type为ALL,代表着全表扫描

EXPLAIN SELECT COUNT(*) FROM `iot_device_alarm_safety_audit`
WHERE `device_id` = 123 AND `alarm_time` = '2024-05-01 12:00:00' AND `CODE` = 'ERROR';

全表扫描的话,表中记录一旦多起来,查询时间随之变大,加上查询频率一旦上去,则cpu就会上升
可以分析以下代码,是否有优化的点

//查询表中记录总数
select count(id) from iot_device_alarm_safety_audit;

定位到了问题,就容易解决了
比如创建索引:
CREATE INDEX idx_device_alarm_code ON iot_device_alarm_safety_audit (device_id, alarm_time, code);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com