加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL慢查询日志怎么设置操作

发布时间:2023-06-14 14:45:30 所属栏目:MySql教程 来源:
导读:这篇文章主要介绍了MySQL慢查询日志怎么设置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL慢查询日志怎么设置文章都会有所收获,下面我们一起来看看吧。

一、概述

My
这篇文章主要介绍了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;
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!