zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql慢查询sql统计_mysql服务启动慢

mysql统计SQL服务 查询 启动
2023-06-13 09:14:38 时间

一、概述

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。

二、慢查询日志设置

1、临时设置

临时开启慢查询日志(重启失效)

set global slow_query_log = on;

注:如果想关闭慢查询日志,只需要执行 set global slow_query_log = off; 即可。

临时慢查询时间临界点 查询时间高于这个临界点的都会被记录到慢查询日志中(重启失效)

set long_query_time = 1;

设置慢查询存储的方式(重启失效)

set global log_output = file;

说明: 可以看到,我这里设置为了file,就是说我的慢查询日志是通过file体现的,默认是none,我们可以设置为table或者file,如果是table则慢查询信息会保存到mysql库下的slow_log表中。

2、查询慢查询日志的开启状态和慢查询日志储存的位置

show variables like ‘%quer%’;

参数说明:

slow_query_log : 是否已经开启慢查询

slow_query_log_file : 慢查询日志文件路径

long_query_time : 超过多少秒的查询就写入日志

log_queries_not_using_indexes 如果值设置为ON,则会记录所有没有利用索引的查询(性能优化时开启此项,平时不要开启)

3、查看存放日志的形式

show variables like ‘log_output’;

4、永久开启慢日志

修改my.cnf

在配置文件my.cnf(一般为/etc/my.cnf)中的[mysqld] section增加如下参数。

[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1

其中,

slow_query_log = 1

表示开启慢查询,0表示关闭

slow_query_log_file

指定慢查询日志路径

需要MySQL对该路径有写权限

long_query_time = 1

表示查询时间>=1秒才记录日志

默认10s

log_queries_not_using_indexes = 1

表明记录没有使用索引的 SQL 语句

重启MySQL服务

重启MySQL后会看到/var/lib/mysql/slow-query.log文件。

三、慢查询测试

制造慢查询并执行。如下。

mysql> select sleep(1);+———-+

| sleep(1) |

+———-+

| 0 |

+———-+

1 row in set (1.00 sec)

慢查询日志

打开慢查询日志文件。可以看到上述慢查询的SQL语句被记录到日志中。

四、慢查询分析工具

mysqldumpslow

mysqldumpslow是MySQL自带的分析慢查询的工具。该工具是Perl脚本。

常用参数如下

-s:排序方式,值如下

c:查询次数

t:查询时间

l:锁定时间

r:返回记录

ac:平均查询次数

al:平均锁定时间

ar:平均返回记录书

at:平均查询时间-t:topN查询-g:正则表达式

获取访问次数最多的5个SQL语句

按照时间排的top 5个SQL语句

$ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log

按照时间排序且含有’like’的top 5个SQL语句

$ mysqldumpslow -s t -t 3 -g “like” /var/lib/mysql/slow-query.log

五、MySQL 清理slowlog方法

SET GLOBAL slow_query_log = ‘OFF’;ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop;CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop;SET GLOBAL slow_query_log = ‘ON’;DROP TABLE mysql.slow_log_drop;

六、小结

默认情况下,MySQL不启动慢查询日志。若要检查慢查询,需要我们手动设置这个参数。一般情况下,若非调优需要,不建议启动该参数,因为开启慢查询日志或多或少会带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181996.html原文链接:https://javaforall.cn