目录
二、将上面的配置放入到Mysql安装目录的my.ini文件中
五、安装慢查询辅助工具软件ActivePerl-5.24.0.2401-MSWin32-x64-401627.exe
六、使用Mysql内置自带的慢查询分析工具mysqldumpslow
一、慢查询配置,及配置项说明
#开启慢查询
#日记存放的地方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条 存到文件中 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、新建查询,失败,因为它修改是局部的