记录mysql慢查询
检测mysql中sql语句的效率的方法
1、通过查询日志
开启MySQL慢查询
Windows中的配置文件一般是my.ini,Linux在etc/my.cnf
在[mysqld]下面加
log-slow-queries = log/mysqlslowquery.log
long_query_time =1
slow_query_log_file=/tmp/slow.log
2、mysqldumpslow命令
命令参数说明:
-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的
记录数来排序,ac、at、al、ar,表示相应的倒叙;
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感的;
例子:
mysqldumpslow -s c -t 10 /tmp/slow-log 访问次数最多的10条SQL语句
mysqldumpslow -s r -t 10 /tmp/slow-log 记录集最多的10条SQL
mysqldumpslow -s t -t 10 -g “left join” /tmp/slow-log
按照时间排序,返回前10条里面含有左连接的SQL语句
注:MySQL慢查询参数
1,slow_query_log
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
(show VARIABLES like “%slow%” ;查看是否打开慢查询日志)
(set global slow_query_log=’ON’;设置打开日志)
2,long_query_time 单位秒
当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
(show variables like ‘long%’;查看当前设置多少秒为慢查询)
(set long_query_time=1;设置为执行时间超过1秒的为慢查询)
3,slow_query_log_file
记录日志的文件名。
4,log_queries_not_using_indexes
这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得
挺快。
其他日志:这些日志文件在mysql重启的时候才会生成
#记录所有sql语句
log=E:/mysqllog/mysql.log
#记录数据库启动关闭信息,以及运行过程中产生的错误信息
log-error=E:/mysqllog/myerror.log
# 记录除select语句之外的所有sql语句到日志中,可以用来恢复数据文件
log-bin=E:/mysqllog/bin
#记录查询慢的sql语句
log-slow-queries=E:/mysqllog/slow.log
#慢查询时间
long_query_time=0.5
参考:http://zhidao.baidu.com/link?url=MeijYQwkudJfeXkYICSL-
bQXYLxmxvsNT80TCwJF6PqrkIesZcaZiEYzpOyXuhsbx9dO4V1oYLjTBf471eImC4cu-
IaB8ACtukyU_iUqNr3