慢日志
1、将MySQL服务器中影响数据库性能的相关SQL语句记录到日志文件中
2、通过对这些特殊的SQL语句进行分析和改进,提高数据库的性能。
默认情况下,MySQL 数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志或多或少会带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
配置慢日志
#在配置文件添加
[root@db03 ~]# vim /etc/my.cnf
#开启慢查询
slow_query_log = on
#慢查询中记录没有使用索引的query
log_queries_not_using_indexes=on
#返回较慢的日志mysql5.6版本以上,取消了参数log-slow-queries,更改为slow-query-log-file
slow_query_log_file=/tmp/slow.log
#慢查询时间,这里为1秒,超过1秒会被记录
long_query_time=1
[root@db03 ~]# systemctl restart mysqld
#查看是否开启
mysql> show variables like '%slow_query_log%';
+---------------------+---------------+
| Variable_name | Value |
+---------------------+---------------+
| slow_query_log | ON |
| slow_query_log_file | /tmp/slow.log |
+---------------------+---------------+
2 rows in set (0.00 sec)
#测试慢日志
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
| 0 |
+----------+
1 row in set (2.00 sec)
[root@db03 ~]# cat /tmp/slow.log
/usr/local/mysql/bin/mysqld, Version: 5.7.10-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306 Unix socket: /tmp/mysql.sock
Time Id Command Argument
# Time: 2021-10-20T01:30:17.096130Z
# User@Host: root[root] @ localhost [] Id: 2
# Query_time: 2.001499 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1634693417;
select sleep(2);