Mysql深入二:开启慢查询及慢查询工具mysqldumpslow

目录

一、慢查询配置,及配置项说明

二、将上面的配置放入到Mysql安装目录的my.ini文件中

三、修改了配置文件,需要在命令行重启一下mysql服务

四、去数据库查询语句,需要超过10s的语句才会被记录,当然上面你可以自己设置慢查询的时间,从而记录,最终都会写到data目录下的DESKTOP-2EKGE5-show.log文件中,这都是上面配置文件设置的

五、安装慢查询辅助工具软件ActivePerl-5.24.0.2401-MSWin32-x64-401627.exe

六、使用Mysql内置自带的慢查询分析工具mysqldumpslow

七、附加Mysql的Global全局session设置说明


一、慢查询配置,及配置项说明

#开启慢查询
#日记存放的地方table/file/(file,table)
#general log会记录下发送给MySQL服务器的所有SQL记录,因为SQL的量大,默认是不开启的。一些特殊情况(如排除故障)可能需要临时开启一下
log_output=FILE
general_log=OFF
general_log_file="DESKTOP-2EKGE5.log"
#启动停止技术慢查询日记 ON表示开启 OFF表示关闭,默认不开启
slow_query_log=ON
#指定慢查询日记存储路径及文件(不指定路径,默认和数据文件放一起data)
slow_query_log_file="DESKTOP-2EKGE5-show.log"
#指定时间多少为慢查询,默认是10秒(就是不设置此项也是10s)
long_query_time=10

 

二、将上面的配置放入到Mysql安装目录的my.ini文件中

 

三、修改了配置文件,需要在命令行重启一下mysql服务


 

四、去数据库查询语句,需要超过10s的语句才会被记录,当然上面你可以自己设置慢查询的时间,从而记录,最终都会写到data目录下的DESKTOP-2EKGE5-show.log文件中,这都是上面配置文件设置的

如:我的数据库查询

查询结果26s,如果慢查询已经开启,此次结果肯定被记录在DESKTOP-2EKGE5-show.log文件中

到Mysql/data目录下,果然看到生成的DESKTOP-2EKGE5-show.log文件内容如下

此时,在多查询几条超过10s的语句

 

五、安装慢查询辅助工具软件ActivePerl-5.24.0.2401-MSWin32-x64-401627.exe

安装后,可以使用perl命令运行mysql内置自带的mysqldumpslow慢查询分析工具

 

六、使用Mysql内置自带的慢查询分析工具mysqldumpslow

解决问题:文件太长,不可能一条一条的找,就需要用到此工具定位查看DESKTOP-2EKGE5-show.log文件的内容,比如mysql按时间排序输出等操作

在Mysql/bin目录下,mysqldumpslow.pl,就是需要工具去运行

在命令行,进入这个位置使用此命令

perl mysqldumpslow.pl -a -s t -t 5 D:/Mysql/data/DESKTOP-2EKGE5-show.log 

查询结果

 

命令介绍说明

perl mysqldumpslow.pl -a -s t -t 5 D:/Mysql/data/DESKTOP-2EKGE5-show.log  

//-s t是指代表总时间排序 ,-t 5表示要取出前面5条 存到文件中
1、-s order (c,t,l,r,at,al,ar) 
         c:总次数
         t:总时间
         l:锁的时间
         r:总数据行
         at,al,ar  :t,l,r平均数  【例如:at = 总时间/总次数】

2、-t  top   指定取前面几条作为结果输出

3、-a 不将数字和字符串抽象成N和S
 

刚开始查询那条时间为0,这个也是我不清楚的地方,反正第一条记录的数据可能会出错

 

七、附加Mysql的Global全局session设置说明

show variables like 'long_query_time' 查询慢查询时间(show VARIABLES查看系统命令)

global什么时候生效,它是什么很有意思?

概念

  • global是全局的,没有global是局部的
  • set global就是动态设置参数,相当于在my.ini里面设置一样,但是重启服务后会失效,当然它不需要重启服务就可以生效
  • 它不会覆盖session变量值(session指my.ini可以配置的属性名),就是my.ini里面设置了这个值,就不会改变值
  • 只有当没有my.ini没有设置这个值,才会生效,而且生效要navicat中要新建查询

解释1:

global是全局的,如果my.ini配置文件没有设置,在用global修饰设置之后都会生效,除非重启服务则失效

1、my.ini配置过,修改慢查询时间(全局)

2、新建查询,发现修改后不生效,因为是按照my.ini配置文件配置的参数读取

3、因为配置文件刚才设置了long_query_time,把它关掉,重启服务

4、查询得到10s,这个是默认的配置

5、修改慢查询时间(全局)

6、新建查询,修改成功

7、局部设置慢查询变量

8、同一个窗口查询,修改成功

9、新建查询,失败,因为它修改是局部的

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值