扫盲 2026.10.12 06:54 21 次浏览 0 条评论

MySQL占用CPU过高处理

MySQL 突然 CPU 飙满,先别急着重启,按顺序查一遍。

登进去看谁在干活:

SHOW FULL PROCESSLIST;
-- State 是 Sending data、Copying to tmp table 的
-- 基本就是慢查询,记下 Id 干掉
KILL 12345;

没抓到就开慢查询日志:

SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 2;      -- 超过2秒就记下来
SET GLOBAL log_queries_not_using_indexes = ON;

日志一般在 data 目录下的 slow.log,翻出来看是哪条语句在拖后腿。

拿到语句用 EXPLAIN 过一遍,type 显示 ALL 就是全表扫描,加对应索引基本能压下去:

EXPLAIN SELECT * FROM user WHERE name = 'abc';

配置上也有坑,小皮面板里改 my.ini,innodb_buffer_pool_size 给太小,数据全走磁盘,CPU 跟着一起高。机器内存的六成左右比较合适,改完重启 MySQL 生效。

说点什么 0

行思随记

欢迎来到:行思随记