在 Ubuntu 上 MySQL 慢查询变多,通常不是“Ubuntu 本身”的问题,而是系统环境 + MySQL 配置 + 业务 SQL共同作用的结果。下面按「常见原因 → 排查方法 → 解决建议」给你梳理。
long_query_time=10s,很多“慢”其实在 1~3 秒,不会被记录检查:
SHOW VARIABLES LIKE 'slow_query_log';
SHOW VARIABLES LIKE 'long_query_time';
建议:
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;
LIKE '%xx'排查:
EXPLAIN SELECT ...;
典型问题:
WHERE DATE(create_time) = '2024-01-01'
WHERE phone = 13800000000 -- phone 是 varchar
常见表现:
查看:
top
free -h
iostat -x 1
典型问题:
Ubuntu 默认 my.cnf 偏小:
常见问题:
innodb_buffer_pool_size 太小max_connections 太低查看:
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
建议(示例):
[mysqld]
innodb_buffer_pool_size = 1G # 物理内存的 50%~70%
max_connections = 200
查看:
SHOW PROCESSLIST;
优化:
OPTIMIZE TABLE table_name;
ext4 / xfscat /var/log/mysql/mysql-slow.log
mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log
SHOW PROCESSLIST;
long_query_time=1)EXPLAIN 分析 Top 慢 SQLinnodb_buffer_pool_size如果你愿意,可以告诉我:
我可以直接帮你定位并给优化方案。