MySQL数据库中慢查询日志的开启、设置和抓取

1、登录MySQL服务器,查看慢查询日志是否开启

命令:

mysql> show variables like '%slow_query_log%';
+---------------------+------------------------------+
| Variable_name       | Value                        |
+---------------------+------------------------------+
| slow_query_log      | OFF                          |
| slow_query_log_file | /var/lib/mysql/peng-slow.log |
+---------------------+------------------------------+
2 rows in set (0.00 sec)

2、开启慢查询日志

命令:

mysql> set global slow_query_log = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%slow_query_log%';
+---------------------+------------------------------+
| Variable_name       | Value                        |
+---------------------+------------------------------+
| slow_query_log      | ON                           |
| slow_query_log_file | /var/lib/mysql/peng-slow.log |
+---------------------+------------------------------+
2 rows in set (0.00 sec)

3、查看慢查询日志中的最大忍耐时间(默认:10s)

命令:

mysql> show variables like '%long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

4、设置慢查询日志中的最大忍耐时间

命令:

mysql> set global long_query_time = 3;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
mysql> show global variables like '%long_query_time%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

------------------------------------------------
新窗口,效果如下
mysql> show variables like '%long_query_time%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 3.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

如果设置完成之后,仍然在当前窗口查看的话,想要看到设置之后的效果

方式一:当前窗口下输入命令,在 show variables like '%long_query_time%’ 命令的show后面加上 global。

方式二:新起一个窗口(即会话),直接输入show variables like '%long_query_time%‘这个命令即可。

5、用下面一个睡眠命令来模拟实际应用场景中的慢SQL语句执行

命令:

mysql> select sleep(4);
+----------+
| sleep(4) |
+----------+
|        0 |
+----------+
1 row in set (4.00 sec)

6、查看慢查询日志文件

命令:

[root@peng mysql]# cat -n peng-slow.log
     1    /usr/sbin/mysqld, Version: 5.5.48-log (MySQL Community Server (GPL)). started with:
     2    Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
     3    Time                 Id Command    Argument
     4    # Time: 210630 19:30:45
     5    # User@Host: root[root] @ localhost []
     6    # Query_time: 4.000641  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
     7    SET timestamp=1625052645;
     8    select sleep(4);
     9    /usr/sbin/mysqld, Version: 5.5.48-log (MySQL Community Server (GPL)). started with:
    10    Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
    11    Time                 Id Command    Argument
上一篇:​LeetCode刷题实战287:寻找重复数


下一篇:LeetCode0141-判断链表是否有环