访问执行速度过慢分析之MySQL慢语句分析

在代码中调用了一个新的方法,发现应用里面的相关功能慢了2~3秒钟酱。查看程序并没有特殊的处理,只是多了几条sql,新增了几个字段。那末,我们来抓一下慢语句看看,是否有优化的空间。

俗话说的好,在IT娱乐圈混的,怎能不学会分析SQL日志进行优化呢,首先来介绍一下MySQL中的慢语句分析的方法。

开启慢查询日志

在mysql会话中输入如下命令查看慢查询的配置:

show variables like “%slow%”;

20141112-mysql01

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)

速度立马回到了毫秒级别。

arthinking wechat
欢迎关注itzhai公众号