使用mysqldumpslow分析慢查询日志

作者:linux120 发布时间:November 29, 2012 分类:服务器维护

事务处理时经常会有用户反馈网站(php+mysql)访问非常慢,有些其实是服务器上某些运行比较慢的sql语句引起的过度资源占用。
我们可以通过mysqldumpslow分析下慢查询的日志。默认的慢查询日志并没有开启,因为开启该功能相应的也会占用服务器一定资源,一般是在分析时开启分析完后就关闭了或让该功能定期运行下。开启该功能需要在my.cnf配置文件中加入:
long_query_time = 1 #查询时间为多少时被记录下来,单位为秒。
log-slow-queries = /usr/local/mysql/var/slow.log #被记录下来的日志存放的路径。
log-queries-not-using-indexes #记录下没有使用索引的sql查询。
保存重启下服务。
然后执行命令分析下日志:
mysqldumpslow -s c -t 10 slow.log

s参数就是按照某一种顺序Order。c参数为查询query的次数,t n参数即top n前面的n条数据。
s后可加的参数还有:c,t,l,r和ac,at,al,ar,分别表示query的次数,返回top n条的数据,lock的时间,return的记录数。参数前加“a”表示倒序过来。

命令返回信息类似于:
Count: 3888 Time=0.00s (0s) Lock=0.00s (0s) Rows=1.0 (3969),
lovhome1[lovhome1]@localhost
select id,name from goods_class where class_id=N order by order_id desc,id desc limit N,N
该方法可以查找出query慢的用户,可以关闭它,以免影响其他用户的正常资源使用,保证服务器的稳定运行。