第83讲:MySQL数据库中的慢查询日志管理

发布时间:2023年12月28日

1.慢查询日志的概念

慢查询日志并不是说这个日志有多慢,而是将数据库中所有执行比较慢是SQL语句记录在这个日志中,我们可以根据慢查询日志中记录的SQL,去分析和优化这个慢SQL。

什么样的语句才会被记录到慢查询日志呢?

  • SQL执行的很慢,超出了我们指定慢SQL的阈值,默认情况下慢SQL的阈值是10秒,当SQL执行超过10秒时就会被记录到慢查询日志中。
  • 当查询的SQL语句没有有走索引,那么此时也会被记录到慢查询日志中。

2.开启慢查询日志

开启慢查询日志最好配置在MySQL的配置文件中,当然也可以在交互模式通过变量来开启,但是重启后会失效,建议配置在主配置文件中。

慢查询日志默认情况下是没有开启的。

mysql> select @@slow_query_log;
+------------------+
| @@slow_query_log |
+------------------+
|                0 |
+------------------+

开启慢查询日志。

[root@mysql ~]# vim /etc/my.cnf 
slow_query_log=1                    		   #开启慢查询日志             
slow_query_log_file=/data/mysql/slow.log        #慢查询日志的路径
long_query_time=10                              #慢查询日志的阈值,当SQL查询达到10秒后则被记录
log_queries_not_using_indexes                   #将没有走索引的查询SQL也记录到慢查询日志中


[root@mysql ~]# systemctl restart mysqld

3.分析慢查询日志

MySQL有一个自带的慢日志分析工具mysqldumslow,通过这个命令可以分析慢日志。

通过-t参数分析前10个慢查询SQL,主要分析慢SQL在数据库范围中执行的次数(Count)和执行的时间(Time),通过列出的慢SQL语句经过分析后进行优化。

[root@mysql ~]# mysqldumpslow -s -c -t 10 /data/mysql/slow.log

Reading mysql slow query log from /var/lib/mysql/mysql-slow.log
Count: 1  Time=135.46s (135s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
  load data local infile 'S' into table tb_user fields terminated by 'S' lines terminated by 'S'

Count: 1  Time=128.37s (128s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
  load data local infile 'S' into table tb_user_100w fields terminated by 'S' lines terminated by 'S'

Count: 2  Time=3.39s (6s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
  select * from xscjb limit N

Count: 1  Time=38.43s (38s)  Lock=0.00s (0s)  Rows=27126.0 (27126), root[root]@[192.168.20.118]
  select * from dabiao

Died at /usr/bin/mysqldumpslow line 162, <> chunk 5.
文章来源:https://blog.csdn.net/weixin_44953658/article/details/135262114
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。