第83讲:MySQL数据库中的慢查询日志管理
2023-12-28 12:07:40
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!