MySQL的慢查询是指执行时间超过MySQL慢查询日志参数long_query_time设置的值的SQL语句。MySQL会将这些超时的SQL语句记录到慢查询日志中,用于分析和优化。
查看慢查询日志参数:
sql
SHOW VARIABLES LIKE 'slow_query%';
这会显示:
- slow_query_log:是否开启慢查询日志,1为开启,0为关闭;
- slow_query_log_file:慢查询日志文件位置;
- long_query_time:多少秒内的SQL语句记录到慢查询日志,默认10秒。
开启慢查询日志:
sql
SET GLOBAL slow_query_log = 1;
慢查询日志记录格式为:
# Time: 2021-08-23T14:15:00.004753Z
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 10.1234 Lock_time: 0.0000 Rows_sent: 133 Rows_examined: 444
USE test;
SELECT * FROM products WHERE category = 1;
通过日志我们可以获得:
- SQL语句执行时间(Query_time)
- SQL语句锁定时间(Lock_time)
- 返回行数(Rows_sent)
- 扫描行数(Rows_examined)
- 执行用户(User@Host)
- 执行时间(Time)
- 具体SQL语句
通过分析慢查询日志,我们可以:
- 定位执行缓慢的SQL语句;
- 查找未使用索引的查询;
- 参数化查询进行优化;
- 重新考虑数据库或表结构;
- 调整MySQL配置参数等。
慢查询日志是MySQL中的重要分析和优化工具,DBA应该定期check慢查询日志以确保MySQL性能。