mysql中的慢查询日志分析与优化方法-mysql教程

需执行 SHOW GLOBAL VARIABLES LIKE ‘slow_query_log’ 确认全局启用状态,值为 ON 表示已开启,并通过 slow_query_log_file 查看日志路径;配置须写入 my.cnf 的 [mysqld] 段并重启生效。

如何确认慢查询日志是否已启用并定位日志路径

MySQL 默认不开启慢查询日志,必须手动配置生效。直接查 slow_query_log 变量只能反映当前会话状态,真正要看全局是否启用,得执行:

SHOW GLOBAL VARIABLES LIKE 'slow_query_log';

如果值为 OFF,说明没开;同时检查 slow_query_log_file 的值,它指向实际日志文件路径(如 /var/lib/mysql/slow.log),但该路径可能因 MySQL 启动用户权限不足而写入失败——常见现象是日志文件存在但大小始终为 0。

关键配置项需写在 my.cnf 的 [mysqld] 段落中,并重启服务才生效:

slow_query_log = ON
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1.0
log_queries_not_using_indexes = OFF

long_query_time 单位是秒,且从 MySQL 5.7 起支持毫秒级(如 0.1),但注意:该阈值对微秒级时间不敏感,实际记录以整数秒四舍五入判断;log_queries_not_using_indexes 开启后会导致大量简单 SELECT 被记录,干扰分析,建议初期关闭。

用 mysqldumpslow 快速提取高频慢查询模式

mysqldumpslow 是 MySQL 自带的解析工具,比直接 grep 或 awk 更可靠,因为它能自动归一化 SQL(把 WHERE id = 123 和 WHERE id = 456 视为同一类)。常用组合:

  • mysqldumpslow -s c -t 10 /var/log/mysql/mysql-slow.log:按出现次数(c)排序,取前 10 条
  • mysqldumpslow -s t -g "SELECT.*FROM orders" /var/log/mysql/mysql-slow.log:筛选含 SELECT ... FROM orders 的语句,并按总耗时(t)排序

注意:mysqldumpslow 不解析带引号的字符串参数,若 SQL 中有类似 WHERE name = '张三',会被统一为 WHERE name = '?' ,所以归类准确;但如果语句里混用反引号、大小写混乱或空格不一致,仍可能被当作不同模式——建议先用 mysqlbinlog 或第三方工具(如 pt-query-digest)做二次校验。

EXPLAIN 输出中哪些字段真正影响性能判断

对慢查询语句执行 EXPLAIN 后,重点盯住这四个字段:

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » mysql中的慢查询日志分析与优化方法-mysql教程
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3998923+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1391+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 3998923+
  • 本周更新: 0+
  • 最后更新: 2026-03-16