MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。在我们进行系统调优的时候可以通过慢查询日志来分析sql的执行情况
重要变量参数:
slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。
long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。单位:秒
log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)
slow_query_log_file:慢查询日志文件位置
如果我们要开启并且查看慢查询日志的话,需要用到以上几个参数:
到slow_query_log_file配置的文件中查看慢日志。
日志格式:
# Time: 2020-03-06T10:25:14.125146Z
# User@Host: root[root] @ localhost [127.0.0.1] Id: 17
# Query_time: 0.000859 Lock_time: 0.000093 Rows_sent: 357 Rows_examined: 714
SET timestamp=1583490314;
SHOW STATUS;
EXPLAIN select city, name,age from student where city='杭州' order by name limit 3;
- Time:执行查询的日期时间
- User@Host:执行查询的用户和客户端IP
- Id:是执行查询的线程Id
- Query_time:SQL执行所消耗的时间
- Lock_time:执行查询对记录锁定的时间
- Rows_sent:查询返回的行数
- Rows_examined:为了返回查询的数据所读取的行数
如果想要进一步的分析慢查询日志,可以用日志分析工具mysqldumpslow
需要注意的是,在开启慢日志功能之后,会对 MySQL 的性能造成一定的影响,因此在生产环境中要慎用此功能。