如何开启慢查询日志_mysql性能分析准备

6次阅读

开启mysql慢查询日志需依次确认状态、启用日志、设置long_query_time阈值(如1.0秒)、指定slow_query_log_file路径并推荐启用log_queries_not_using_indexes,最后重启服务并用select sleep(3)验证写入。

如何开启慢查询日志_mysql性能分析准备

开启 MySQL 慢查询日志是性能分析的第一步,核心在于确认日志开关、设定合理阈值、指定日志路径,并确保配置生效。

确认并启用慢查询日志功能

MySQL 默认通常关闭慢查询日志。需检查当前状态并启用:

  • 登录 MySQL 后执行 SHOW varIABLES LIKE ‘slow_query_log’;,若值为 OFF,说明未开启
  • 临时启用(重启失效):SET GLOBAL slow_query_log = ON;
  • 永久启用:在 my.cnfmy.ini[mysqld] 段下添加:
    slow_query_log = ON

设置慢查询时间阈值(long_query_time)

该参数决定“多慢才算慢”,单位为秒,支持小数(如 0.5 表示 500ms):

  • 查看当前值:SHOW VARIABLES LIKE ‘long_query_time’;
  • 临时调整:SET GLOBAL long_query_time = 1.0;
  • 永久设置(推荐):在配置文件中添加 long_query_time = 1.0(生产环境常设为 0.5~2.0,依业务响应要求而定)
  • 注意:修改后新连接才生效;已存在的连接仍沿用旧值,除非显式执行 SET

指定慢查询日志文件路径与格式

日志路径影响可维护性,格式影响后续分析工具兼容性:

  • 设置路径:slow_query_log_file = /var/log/mysql/mysql-slow.log(需确保 MySQL 进程有写入权限)
  • 建议使用绝对路径,避免因工作目录不确定导致日志写入失败
  • 启用扩展日志信息(强烈推荐):log_queries_not_using_indexes = ON —— 记录未走索引的查询,即使未超时
  • 如需分析更细粒度(如锁等待、行扫描数),可配合 log_output = FILE(默认)或 table(写入 mysql.slow_log 表,便于 SQL 查询)

验证配置是否生效并测试写入

配置修改后必须重启 MySQL 或重载配置,并主动触发一条慢查询验证:

  • 执行 SELECT SLEEP(3);(假设 long_query_time=2)
  • 检查日志文件是否新增对应条目:tail -n 5 /var/log/mysql/mysql-slow.log
  • 若无记录,检查错误日志(mysqld.err)是否有权限/路径相关报错
  • 也可执行 SHOW ENGINE PERFORMANCE_SCHEMA STATUS; 辅助排查(尤其启用了 performance_schema 时)

不复杂但容易忽略:配置修改后务必重启 mysqld 或执行 FLUSH LOGS;,且需确认 MySQL 用户对日志目录有写权限。开启后定期轮转日志,避免磁盘占满。

text=ZqhQzanResources