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

Posted 小鹏说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于MySQL数据库中慢查询日志的开启设置和抓取的主要内容,如果未能解决你的问题,请参考以下文章

MySQL优化:慢SQL分析

什么是慢查询?

教你如何快速定位项目中慢查询[项目管理]

3mysql查询截取分析

如何开启MySQL慢查询日志

MySQL高级篇 - 性能优化