可以配置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日志之【慢速查询日志】