MySQL慢查询日志怎么设置

80次阅读
没有评论

共计 2054 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍了 MySQL 慢查询日志怎么设置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇 MySQL 慢查询日志怎么设置文章都会有所收获,下面我们一起来看看吧。

一、概述

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 慢查询日志怎么设置”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“MySQL 慢查询日志怎么设置”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计2054字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)