Skip to content

慢查询日志

MySQL中,需要查看执行慢的SQL,需要先开启慢查询日志。

MySQL的慢查询日志,记录了MySQL中响应时间超过阈值的SQL语句。

参数说明

  • slow_query_log:是否开启慢查询日志,1表示开启,0表示关闭。
  • log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
  • slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
  • long_query_time:慢查询阈值,当查询时间多于设定的阈值时,记录日志。
  • log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。
  • log_output:日志存储方式。
    • log_output = FILE 表示将日志存入文件,默认值是 FILE
    • log_output = TABLE表示将日志存入数据库

命令

阈值

  • long_query_time

    慢查询执行时间阈值,默认10s,单位为 S。

  • 查看阈值

    SHOW VARIABLES LIKE '%long_query_time%';
  • 临时设置阈值

    set global long_query_time = 1

查看慢查询日志状态

SHOW VARIABLES LIKE '%slow_query_log%';

临时开启慢查询

set global slow_query_log = 'ON'

记录未走索引的SQL语句

set global log_queries_not_using_indexes='ON'

日志

- Time: 2024-08-06T10:01:47.429437Z
- User@Host: buynow[buynow] @  [10.10.102.82]  Id: 877264
- Query_time: 0.000210  Lock_time: 0.000070 Rows_sent: 0  Rows_examined: 1
SET timestamp=1722938507;
select a.PROJECT_KEY from sys_project a,sys_project_datacenter_clusters b where b.dc_clusters_id = 1 and a.PROJECT_ID = b.PROJECT_ID and a.DELETE_FLAG = 0 ORDER BY a.PROJECT_ID;
  • 慢日志的Rows_examined:执行该SQL,实际扫描的行数,真实值
  • 慢日志的Rows_sent:执行该SQL,实际返回的行数

参考链接

www.jb51.net