在 Debian 上排查 MySQL 慢查询,一般按下面几步来:
mysql -u root -p
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'slow_query_log_file';
SHOW VARIABLES LIKE 'long_query_time';
常见含义:
slow_query_log:是否开启(ON/OFF)slow_query_log_file:慢日志文件路径long_query_time:超过多少秒算慢查询(默认 10 秒)SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
编辑 MySQL 配置文件(Debian 通常是):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
加入或修改:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
重启 MySQL:
sudo systemctl restart mysql
sudo less /var/log/mysql/mysql-slow.log
日志内容示例:
# Time: 2026-01-15T10:00:00
# User@Host: root[root] @ localhost []
# Query_time: 3.123456 Lock_time: 0.000123 Rows_sent: 1 Rows_examined: 100000
SELECT * FROM users WHERE name LIKE '%abc%';
Debian 自带工具:
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log
常用参数:
# 按执行时间排序,前10条
mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log
# 按次数排序
mysqldumpslow -s c -t 10 /var/log/mysql/mysql-slow.log
SHOW PROCESSLIST;
或
SELECT * FROM information_schema.PROCESSLIST
WHERE TIME > 1;
EXPLAIN SELECT ...LIKE '%xx%' 无法走索引SELECT *innodb_buffer_pool_size 太小)如果你愿意,可以把:
发出来,我可以帮你直接分析慢查询原因。