如何开启慢查询日志_mysql性能日志配置

2次阅读

mysql慢查询日志用于记录执行超时sql,通过show variables查看状态,可动态set global开启或配置文件永久启用,建议生产环境设long_query_time为1–2秒并确保日志路径权限正确。

如何开启慢查询日志_mysql性能日志配置

MySQL 慢查询日志(Slow Query Log)是定位性能瓶颈最直接有效的工具之一,它会记录执行时间超过指定阈值的 SQL 语句。开启后,结合 mysqldumpslow 或分析工具(如 pt-query-digest),能快速识别“拖慢数据库”的元凶。

确认当前慢查询日志状态

登录 MySQL 后执行以下命令查看是否已启用:

SHOW VARIABLES LIKE 'slow_query_log';<br>SHOW VARIABLES LIKE 'long_query_time';<br>SHOW VARIABLES LIKE 'slow_query_log_file';

slow_query_log 值为 OFF,说明未开启;long_query_time 默认是 10 秒,生产环境建议调低至 1–2 秒;slow_query_log_file 是日志路径,确保 MySQL 进程对该路径有写权限。

动态开启(无需重启)

适用于临时诊断或测试环境,立即生效但服务重启后失效:

  • 开启日志SET GLOBAL slow_query_log = ON;
  • 设置阈值(例如 2 秒)SET GLOBAL long_query_time = 2;
  • 指定日志文件路径(可选)SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

注意:修改 long_query_time 对已连接会话不生效,新连接或后续查询才按新值判断。

永久生效(推荐生产环境)

编辑 MySQL 配置文件(通常是 /etc/my.cnf/etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 段落下添加:

slow_query_log = ON<br>slow_query_log_file = /var/log/mysql/mysql-slow.log<br>long_query_time = 2<br>log_queries_not_using_indexes = OFF  # 可选:避免索引缺失语句刷屏

保存后重启 MySQL 服务:sudo systemctl restart mysql(或 mysqld)。重启前建议先手动创建日志目录并赋权:sudo mkdir -p /var/log/mysql && sudo chown mysql:mysql /var/log/mysql

验证与基本分析

触发一条慢查询(如 select SLEEP(3);),然后检查日志文件是否写入:

tail -f /var/log/mysql/mysql-slow.log

典型日志行包含:执行时间、锁等待时间、返回行数、扫描行数、SQL 语句本身。重点关注 Rows_examined 远大于 Rows_sent 的语句——大概率缺少索引或存在全表扫描。

text=ZqhQzanResources