mysql慢查询如何自动捕获_配置slow_query_log与慢查询分析工具

张开发
2026/4/18 1:07:03 15 分钟阅读

分享文章

mysql慢查询如何自动捕获_配置slow_query_log与慢查询分析工具
MySQL慢查询日志需动态开启SET GLOBAL slow_query_log ON并设long_query_time如1.0秒指定slow_query_log_file路径且默认不记录UPDATE/DELETE解析推荐pt-query-digest而非mysqldumpslow日志轮转须先关闭再重命名或用FLUSH SLOW LOGS。slow_query_log 怎么打开才真正生效MySQL 的慢查询日志默认是关闭的光改配置文件不重启或不动态启用slow_query_log 就只是个摆设。很多线上环境配了但查不到慢 SQL根本原因是没确认它是否真在写入。动态开启无需重启SET GLOBAL slow_query_log ON;但要注意该命令只对新连接生效当前会话不会记录自己执行的语句必须同时设置 long_query_time例如 SET GLOBAL long_query_time 1.0;单位秒支持小数否则默认是 10 秒大部分“慢”都漏掉了日志路径由 slow_query_log_file 控制建议显式指定绝对路径如 /var/log/mysql/mysql-slow.log避免 MySQL 自行拼接出错或权限不足检查是否生效最直接的方式SHOW VARIABLES LIKE slow_query_log%; 和 SHOW VARIABLES LIKE long_query_time;为什么开了 slow_query_log 却没记录 UPDATE/DELETE默认情况下MySQL 只记录 SELECT 语句到慢查询日志UPDATE、DELETE、INSERT 等写操作不会被收录——这是很多人排查 DML 性能问题时踩的第一个坑。要捕获所有慢语句必须开启 log_queries_not_using_indexes 并配合 min_examined_row_limit但这俩不是为 DML 设计的仍不可靠真正可行的办法是启用 general_log 过滤但开销大仅限临时诊断生产环境更推荐用 performance_schema.events_statements_summary_by_digest 查聚合后的慢执行摘要如果非要用慢日志抓写操作5.7 可设置 log_output TABLE 并查 mysql.slow_log 表但注意该表默认是 CSV 引擎插入性能差且不自动清理mysqldumpslow 解析慢日志总报错或结果不准mysqldumpslow 是 MySQL 自带的分析工具但对现代慢日志格式兼容性差尤其遇到带毫秒精度的 long_query_time如 0.1、带注释的 SQL 或多行语句时解析极易出错或合并失败。 Ideogram Ideogram是一个全新的文本转图像AI绘画生成平台擅长于生成带有文本的图像如LOGO上的字母、数字等。

更多文章