MySQL的慢查询日志可以把超过参数long_query_time时间的所有SQL语句记录进来,帮助DBA人员优化所有有问题的SQL语句。通过mysqldumpslow工具可以查看慢查询日志。
视频讲解如下:
下面通过具体的演示来说明如何使用MySQL的慢查询日志。
(1)查看是否开启了慢查询日志功能
mysql> show variables like '%slow_query%'; # 输出的信息如下: +---------------------+----------------------------------------+ | Variable_name | Value | +---------------------+----------------------------------------+ | slow_query_log | OFF | | slow_query_log_file | /usr/local/mysql/data/mysql11-slow.log | +---------------------+----------------------------------------+ # 其中: # slow_query_log:是否慢查询开启状态。 # slow_query_log_file:指定慢查询日志存放的位置。
提示:可以通过设置参数“long_query_time”来指定查询超过多少秒才记录,该参数的默认值是10秒。
(2)临时启用慢查询日志
mysql> set global slow_query_log='ON'; mysql> set session long_query_time=2;
提示:如果需要永久启用慢查询日志,可以修改配置文件“/etc/mysql.cnf”增加下面的内容,并重启MySQL。
[mysqld] slow_query_log = ON slow_query_log_file = /usr/local/mysql/data/mysql11-slow.log long_query_time = 2
(3)查看当前的慢查询日志设置
mysql> show variables like '%slow_query_log%'; # 输出的信息如下: +---------------------+----------------------------------------+ | Variable_name | Value | +---------------------+----------------------------------------+ | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/data/mysql11-slow.log | +---------------------+----------------------------------------+ mysql> show variables like '%long_query_time%'; # 输出的信息如下: +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 2.000000 | +-----------------+----------+
(4)手动触发一个慢查询。
mysql> select sleep(3);
(5)查看慢查询日志
cat /usr/local/mysql/data/mysql11-slow.log # 输出的信息如下: /usr/local/mysql/bin/mysqld, Version: 8.0.20 (MySQL Community Server - GPL). started with: Tcp port: 3306 Unix socket: /tmp/mysql.sock Time Id Command Argument # Time: 2022-02-20T03:37:12.626943Z # User@Host: root[root] @ localhost [] Id: 8 # Query_time:3.000572 Lock_time: 0.000000 Rows_sent:1 Rows_examined: 1 use demo1; SET timestamp=1645328229; select sleep(3);
提示:慢查询日志也可以使用“mysqldumpslow”指令进行查看,例如:
mysqldumpslow /usr/local/mysql/data/mysql11-slow.log