霜天部落 | 专注PHP研发,研究LAMP高性能架构部署与优化

mysql慢日志分析(slow log)

mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具。

启用 slow log 有两种方式:

1. 在 my.cnf 文件中设置

long_query_time = 1
log-slow-queries = /tmp/slow.log
log-queries-not-using-indexes

long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,
log-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。

2. 在mysqld进程启动时,指定–log-slow-queries[=file_name]选项

慢查询日志分析

在生成慢查询日志后,使用官方提供的 mysqldumpslow 就可以进行简单分析了。

先 mysqldumpslow –help 看一下它的用法和参数

-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string

中文说明:

-s,是order的顺序,说明写的不够详细,主要有c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的

使用方法:

mysqldumpslow -s c -t 20 slow.log
mysqldumpslow -s r -t 20 slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。

mysqldumpslow -t 10 -s t -g “left join” slow.log

这个是按照时间返回前10条里面含有左连接的sql语句。

用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。

其他的mysql slow log分析工具:

除了mysql官方提供的 mysqldumpslow 之外,还有 mysqlsla, myprofi 等比较好用的工具。具体的用法大家可以去网上搜一下。

 



There are 4 Comments to "mysql慢日志分析(slow log)"