All Sunday

首页

MySQL性能优化

一月份上线了一个新的APP版本后导致MySQL的性能急剧下降。机器的io近几天基本一直都是100%状态,于是开始调MySQL的性能。

pt-query-digest /var/log/mysql/mysql-slow.log | vim -

分析结果会在vim里面打开。pt-query-digest会根据查询花费的时间排序,按照顺序往下看,一个一个的看,是不是该建的索引没建,或者建的不合适,导致 查询没用上索引。

这时候,一般可以用 pt-query-digest 的 --processlist 参数,对 MySQL 以一定的时间间隔执行 show processlist

pt-query-digest --user user_name --password pass_word --processlist localhost --interval 0.01 --run-time 10m | vim -

抽样分析的结果同样会在 vim 中显示。 依次分析每条语句。

tcpdump -s 65535 -x -nn -q -tttt -i any -c 99999 port 3306 | pt-query-digest --type tcpdump --run-time 600s | vim -

这会分析10分钟内 MySQL 所有的查询,依次排查就可以了,一般到这步基本都是可以定位到瓶颈。

找到瓶颈以后,建立合适的索引,问题解决。

下一篇: mako根据条件判断是否使用页面缓存