使用MySQL Slow Log来解决MySQL CPU占用高的问题

 更新时间:2013年03月31日 13:15:47   作者:  
在Linux VPS系统上有时候会发现MySQL占用CPU高,导致系统的负载比较高。这种情况很可能是某个SQL语句执行的时间太长导致的。优化一下这个SQL语句或者优化一下这个SQL引用的某个表的索引一般能解决问题
但是怎么找到是哪个SQL语句的执行时间过长呢?可以通过MySQL Slow Log来找,详解如下。

首先找到MySQL的配置文件my.cnf,根据不同版本的mysql开启慢查询的配置也不一样


mysql 5.0

[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/slow.log


mysql 5.1

[mysqld]
long_query_time = 1
slow_query_log=1
slow_query_log_file = /var/log/mysql/slow.log


long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries和slow_query_log_file 设置把日志写在哪里


把上述参数打开,运行一段时间,就可以关掉了,省得影响生产环境

接下来就是分析了,我这里的文件名字叫 /var/log/mysql/slow.log。
先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 /var/log/mysql/slow.log
mysqldumpslow -s r -t 20 /var/log/mysql/slow.log

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


mysqldumpslow -t 10 -s t -g “left join” /var/log/mysql/slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。

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

相关文章

  • MySQL整型数据溢出的解决方法

    MySQL整型数据溢出的解决方法

    这篇文章主要介绍了MySQL整型数据溢出的解决方法,本文出现整型溢出的mysql版本是5.1,5.1下整型溢出不会报错,而会变成负数,需要的朋友可以参考下
    2014-07-07
  • mysql中的跨库关联查询方法

    mysql中的跨库关联查询方法

    这篇文章主要介绍了mysql中的跨库关联查询方法,需要的朋友可以参考下
    2017-05-05
  • MySQL连接查询你真的学会了吗?

    MySQL连接查询你真的学会了吗?

    日常使用数据库查询语句时,单表查询尝尝不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,这篇文章主要给大家介绍了关于MySQL连接查询的相关资料,需要的朋友可以参考下
    2021-06-06
  • MySQL的主键命名策略相关

    MySQL的主键命名策略相关

    这篇文章主要介绍了MySQL的主键命名策略的的相关资料,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2021-01-01
  • 用mysqldump备份和恢复指定表的方法

    用mysqldump备份和恢复指定表的方法

    用mysqldump备份和恢复指定表的方法...
    2007-07-07
  • Win10安装MySQL5.7.18winX64 启动服务器失败并且没有错误提示

    Win10安装MySQL5.7.18winX64 启动服务器失败并且没有错误提示

    这篇文章主要介绍了Win10安装MySQL5.7.18winX64 启动服务器失败并且没有错误提示,需要的朋友可以参考下
    2017-06-06
  • Mysql SQL服务器模式介绍

    Mysql SQL服务器模式介绍

    这篇文章主要介绍了Mysql SQL服务器模式介绍,需要的朋友可以参考下MySQL服务器可以以不同的SQL模式来操作,并且可以为不同客户端应用不同模式,这样每个应用程序可以根据自己的需求来定制服务器的操作模式,需要的朋友可以参考下
    2014-12-12
  • MYSQL数据库中cmd命令操作详解

    MYSQL数据库中cmd命令操作详解

    今天我们就来看一下数据库的各种命令,以下命令全部是从CMD命令窗口下的命令行输入指令,首先如果如果输入mysql,系统提示“mysql不是内部命 令或外部命令
    2016-04-04
  • MySQL5.7不停业务将传统复制变更为GTID复制的实例

    MySQL5.7不停业务将传统复制变更为GTID复制的实例

    下面小编就为大家带来一篇MySQL5.7不停业务将传统复制变更为GTID复制的实例。小编觉的挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • mysql每半小时平均值计算的sql语句

    mysql每半小时平均值计算的sql语句

    有时候我们需要计算每半小时的平均值,那么就需要参考下面的sql语句了
    2015-11-11

最新评论