慢查询日志
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
表示将日志存入数据库
- log_output =
命令
阈值
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,实际返回的行数