mysql 慢查询分析

最近服务器经常当机,远程登录服务器查看进程后才发现mysql查询的效率太低了,有不少慢查询。主要是由:1.sql语句存在不少效率低的2.最近这段时间用户增加比之前多了不少,几乎每天都是很大的增长—流量跟操作都大增3.查询日志后发现出现当机情况时都有大量用户都在同时操作4.程序存在不少废语句5.内存小了点,我怀疑服务器本身也不稳定!这些都是我们存在的问题!下面来总结一下我一般怎么查看服务器包括 mysql的慢查询分析,只是个人总结,没有什么好的见解,欢迎朋友们拍砖和帮助。

1.在linux系统里(我们用的是ubuntu9,php5,apache5,mysql5.)我一般用top或者uptime两个命令来查询进程,top能让我一目了然的查看非常耗资源的进程,喜欢用。

2.mysql -u root -p

然后输入mysql的密码,先 show processlist查看正在运行的sql语句,然后在status 查看存在多少慢查询语句

3.mysqldumpslow -s c -t 20 mysql-slow.log

这是进入到存放 mysql 日志的文件夹后输的命令,可以查看mysql 慢查询语句。

  • -s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
  • -t, 是top n的意思,即为返回前面多少条的数据;
  • -g, 后边可以写一个正则匹配模式,大小写不敏感的;
  • 比如
    /path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
    得到返回记录集最多的10个查询。
    /path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
    得到按照时间排序的前10条里面含有左连接的查询语句。

    小结
    使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句,对MySQL查询语句的监控、分析、优化是MySQL优化的第一步,也是非常重要的一步。

    参考资料  平凡的世界 的博客,还有,《查看MySQL运行状况》这篇文章

    关于 beeboo

    瘦仔,很傻很坚强
    此条目发表在 coding, 数据库 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>