教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 数据库 > MYSQL教程 >

[原创]mysql利用慢查询日志排查sql效率Mysql SLOW QUERY LOG

时间:2013-01-14 16:58来源:未知 作者:ken 点击:

很多时候我们被都些效率低下sql困扰着,特别是网站大了,sql语句多了却无从查起,mysql提供了不错的参考方法,慢查询日志。

简单的配置几个参数即可,在linux修改my.cnf或者windows修改my.ini

slow_query_log=1//启动慢查询 5.1.29开始用slow_query_log 来启动,可以写配置也可以命令行启动
log-output=FILE //保存类型
long-query-time//查询多久才算是慢呢?按秒计算 自己根据网站实际情况设置!
slow_query_log_file//这个一看就知道是日志的路径
log-queries-not-using-indexes参数,表示记录下没有使用索引的查询。

[mysqld]

slow_query_log=1
log-output=FILE
slow_query_log_file=/var/lib/mysql/mysql_slow.log
long-query-time=2
log-queries-not-using-indexes

重启MySQL Service 站长教学网 eduyo.com

连接上MySQL,查看是否开启slow_query_log

mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_query_log      | OFF                               |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+

 如果没有打开,请开启slow_query_log

mysql> set @@global.slow_query_log = on;

 再次检查是否开启成功

mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_query_log      | ON                               |
| slow_query_log_file | /var/lib/mysql/mysql_slow.log |
+---------------------+-----------------------------------+

9.检查当前/var/lib/mysql目录下是否存在mysql_slow.log(现在已经存在该文件)
从日志中,可以发现查询时间超过2 秒的SQL,而小于2秒的没有出现在此日志中 eduyo.com
根据日志记录sql,就能非常方便检查哪些语句效率低了。

分析的时候可以用官方自带的mysqldump.
使用方法可以用mysqldump --help来查询.

 
介绍简单比较实际的参数:
1.  -s,是order的顺序,有c,t,l,r和ac,at,al,ar,
     分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
2.  -t,是top n的意思,想想limit n 的意思就知道了
-g,后边可以写一个正则匹配模式,大小写不敏感

 
实例1:
mysqldumpslow -s c -t 10 localhost-slow.log
mysqldumpslow -s r -t 10 localhost-slow.log
后面slow.log是你的日志文件名.
两个查询分别按命令使用次数和返回记录数返回前10条.

 
实例2:
mysqldumpslow -t 10 -s t -g “left join” localhost-slow.log
返回日志中带有左连接left join的语句.

使用explain分析查询

(责任编辑:ken)
TAG标签: mysql 日志 慢查询
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容