温馨提示×

debian mysql慢查询怎么查

小樊
37
2026-10-19 11:58:39
栏目: 云计算

在 Debian 上排查 MySQL 慢查询,一般按下面几步来:


一、确认慢查询日志是否开启

1. 登录 MySQL

mysql -u root -p

2. 查看慢查询相关参数

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%';

四、使用 mysqldumpslow 分析(推荐)

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 太小)

如果你愿意,可以把:

  • MySQL 版本
  • 慢日志片段
  • 具体 SQL

发出来,我可以帮你直接分析慢查询原因。

0 踩