MySQL日志之【慢速查询日志】

 可以配置mysqld 将这些慢速查询记录到适当命名的慢速查询日志中。日后可以通过观察这些日志,来决定哪些部分需要调整。

一 、 开启慢速查询日志

log-slow-queries="E:/phpStudy/MySQL/Mylog/slow-bin.log"  指定日志文件路径
long_query_time = 2   记录执行超过2秒会记录日志
log-queries-not-using-indexes 记录没有使用索引的查询

   重启mysql服务器

二 、使用mysql自带命令mysqldumpslow查看

   1、 mysqldumpslow命令

/path/mysqldumpslow -s c -t 10 /database/mysql/slow-log

     会输出记录次数最多的10条SQL语句,其中:

 -s ,是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的
记录数来排序,ac、at、al、ar,表示相应的倒叙;
 -t, 是top n的意思,即为返回前面多少条的数据;
 -g ,后边可以写一个正则匹配模式,大小写不敏感的;
mysqldumpslow -s r -t 10  /slowquery.log     #slow记录最多的10个语句
mysqldumpslow -s t -t 10 -g "left join" /slowquery.log  #按照时间排序前10中含有"left join”

   2、windows下,需要先安装perl,然后在命令行下,输入

 C:\Perl\bin>perl E:\MySQL\bin\mysqldumpslow.pl --help

   3、linux下进入mysql/bin 目录,输入 mysqldumpslow –help或–help  

   4、mysqldumpslow.pl在不同系统下的位置:    

linux ---> /usr/bin/mysqldumpslow
windows ---> mysql\scripts\mysqldumpslow.pl

   5、也可自己查看mysql目录下生成的日志文件

    其中包含的信息有:

1)Query_time:执行时间
2)Lock_time:MySQL服务器阶段(不是在存储引擎阶段)等待表锁时间
3)Rows_sent : 查询返回的行数
4)Rows_examined:扫描的行数量
5)Set timestamp: mysql设置时间戳

如果开启了log_queries_not_using_indexes选项,slow query日志会充满过多的垃圾日志记录,

这些快且高效的全表扫描查询(表小)会冲掉真正有用的slow queries记录。比如select * from temp这样的查询也会被记录下来。

三 、管理(删除)MySQL慢速查询日志

     删除日志文件后,重启mysql服务器会再,重新生成一个日志文件

原创文章,转载请注明: 转载自HSBLOG

本文链接地址: MySQL日志之【慢速查询日志】