现在的位置: 首页数据存储 > 正文
MySQL慢查询分析
关键词:MySQL ┊ 来源: 原创收藏

打开MySQL慢查询 
MySQL慢查询记录日志对于跟踪PHP+MySQL体系下的MySQL负载调优问题很有用处,比如安装了很多Discuz!插件的用户,这样可以大概排查出那些插件有代码问题。其实启用MySQL的慢查询日志很简单,只需要在MySQL的配置文件里添加log-slow-queries和long_query_time两个参数即可。 


Windows下开启MySQL慢查询 

MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上 
log-slow-queries = F:\MySQL\log\mysqlslowquery.log 
long_query_time = 2 


Linux下启用MySQL慢查询 
MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上 
log-slow-queries=/data/mysqldata/slowquery.log 
long_query_time=2 

注意 
log-slow-queries = F:\MySQL\log\mysqlslowquery.log为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录; 
long_query_time=2中的2表示查询超过两秒才记录; 

2009年09月24日更新 
在my.cnf或者my.ini中添加log-queries-not-using-indexes参数,表示记录下没有使用索引的查询。比如: 
log-slow-queries=/data/mysqldata/slowquery.log 
long_query_time=2 

log-queries-not-using-indexes 

而对于大多数的程序员来说,最容易发现并解决的问题就是MySQL的慢查询或者没有利用索引的查询,所以这里主要给大家介绍如何利用官方的mysqldumpslow工具方便的查看这些信息。如何打开MySQL的慢查询,请点击《打开MySQL的慢查询记录》。 

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, 后边可以写一个正则匹配模式,大小写不敏感的; 
比如 
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log 
得到返回记录集最多的10个查询。 
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log 
得到按照时间排序的前10条里面含有左连接的查询语句。 

小结 
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化的第一步,也是非常重要的一步。 

本文由 jack 发布于 2827天 6小时 9分钟前,目前已有 3386 人浏览
欢迎大家转载分享,请注明来源及链接;商业媒体转载请获得授权,谢谢合作!
 

添加评论