在代码中调用了一个新的方法,发现应用里面的相关功能慢了2~3秒钟酱。查看程序并没有特殊的处理,只是多了几条sql,新增了几个字段。那末,我们来抓一下慢语句看看,是否有优化的空间。
俗话说的好,在IT娱乐圈混的,怎能不学会分析SQL日志进行优化呢,首先来介绍一下MySQL中的慢语句分析的方法。
开启慢查询日志
在mysql会话中输入如下命令查看慢查询的配置:
show variables like “%slow%”;
log_slow_queries 这个就是慢查询的配置啦,如果没有需要在my.cnf里面配置一下喔。
分析日志的工具
mysqldumpslow
用法参考
http://dev.mysql.com/doc/refman/5.1/en/mysqldumpslow.html
如,我输入
mysqldumpslow -s l -t 10 /slowquery.log
表示查看lock time最长的10个语句
mysqlsla
用法参考
http://hackmysql.com/mysqlsla_guide
经过分析发现一个日志表的多条件查询语句花了超过1秒钟,查看下有60多W的数据量,除了主键,没有加索引酱紫裸奔了~
SELECT id FROM xxx_log WHERE username = ‘arthinking’ AND type = 1 ORDER BY time DESC
立刻加上索引:
CREATE INDEX idx_xxx_username_type ON xxx_log(username, type, time)
速度立马回到了毫秒级别。