MySQL SlowLog开启与配置方法

桃夭
桃夭
发布时间:2026-10-14 | 1人浏览过
原创

在大规模 MySQL 集群中,识别并优化性能瓶颈至关重要。本文将介绍如何利用 MySQL 内置的 slow_log 功能,实时捕获耗时查询。通过动态修改全局参数,将慢查询日志同时写入文件与系统表,为后续的自动化监控与告警提供数据支撑。

开启日志写入目标 (Output Target)

为了确保既能方便日常查看(File),又能通过 SQL 语句进行聚合分析与报警(Table),我们需要配置 log_output 变量。该参数自 MySQL 5.1 起支持同时指定多个输出格式。

执行命令:

SET GLOBAL log_output = 'Table,File';

操作后效果如下:

开启慢查询记录开关 (log_slow_query)

确认输出方式后,需要启动实际的记录机制。使用以下 SQL 指令开启慢查询功能:

SET GLOBAL log_slow_query = ON;

开启过程提示见下图:

设定阈值时间 (long_query_time)

默认情况下,只有执行时间超过一定阈值的 SQL 才会被记录。我们通常将其调整为 10 秒(即默认值),以确保过滤掉常规查询,只关注真正耗时的语句。可以使用 `SHOW VARIABLES` 查看当前状态:

SHOW VARIABLES LIKE 'long%';

结果显示 long_query_time 默认为 10 秒:

验证结果:自动记录慢查询至 slow_log 表

当所有参数配置完成后,MySQL 会自动开始运行。凡是超过 10 秒执行的 SQL 语句,不仅会被追加到指定的文件路径中,还会被同步插入到 mysql 数据库内部的 slow_log 表中。这意味着我们可以随时执行 SELECT 来排查最近的高负载查询。

配合外部工具进行规模化监控

虽然单台服务器可以通过上述方式实现基础监控,但在多节点集群环境下,建议结合 ETL 流程(如 SSIS)与存储过程(Proc)编写定时脚本。这些脚本可以每天从各个节点的 mysql.slow_log 抽取数据并进行集中分析,从而实现对多台服务器的“面”状监控体系。

SSIS 数据流转示意图如下:

对于测试或特殊场景下的全量检测需求,可将 long_query_time 临时设置为 0。此时任何查询都会被记录。通过邮件等方式发送报表的效果图示例如下:

以上就是 MySQL 慢查询日志开启与配置方法的详细内容,更多关于 MySQL 性能优化的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表