使用MySQL Slow Log来解决MySQL CPU占用高的问题
发布时间:2018-04-15 09:55:30
但是怎么找到是哪个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语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。
相关文章
120726 11:57:22 [Warning] user entry root@localhost localdomain ignored in --skip-name-resolv 2018-04-15
基本概念 & 8226; 字符(Character)是指人类语言中最小的表义符号。例如 A 、 B 等; & 8226; 给定一系列字符 2018-04-15
简要说明 字符集和校对规则 字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。 MySql在 2018-04-15
需要开启一个慢查询输出的一个机关:log_slow_queries。可以在MySQL配置文件中(my ini my cnf)中设置,也可以通 2018-04-15
今天在使用ORDER BY的过程中出现了一点问题,发现之前对ORDER BY理解是错误的。 之前在w3s网站上看到ORDER B 2018-04-15
线上有个数据库,在slow log中,存在大量类似下面的记录: 复制代码 代码如下: Time: 130823 13:56:08 2018-04-15
1, see the slow log status;
mysql> show variables like %slow% ;+---------------------+--------- 2018-04-15
mysql 日志系统上线有段时间了,前端在慢慢切站点过来写入,未雨绸缪 diy了套 mysql 监控工具
分为 slave s 2018-04-15
mysqldumpslow是mysql自带的用来分析慢查询的工具
经常使用几个命令
-s ORDER what to sort by (al, at, 2018-04-15
一个普通WEB站点的页面常常需要查询N条SQL语句后才能得出页面结果,当网站访问速度慢而前端做了大量优化工作以后 2018-04-15
1、查看是否启用了日志:show variables like log_bin ;
2、查看当前日志文件名:show master status;
3、 2018-04-15
如果10台以内的db的话,自己手动ssh进去,clean就足以,但是上百台呢,就要写脚本了。大概思路:在 一台db跳转 2018-04-15
线上有个数据库,在slow log中,存在大量类似下面的记录: 复制代码 代码如下: Time: 130823 13:56:08 2018-04-15
创建存储过程时
出错信息:复制代码 代码如下:ERROR 1418 (HY000): This function has none of DETERMI 2018-04-15
mysql binlog3种格式,row,mixed,statement 解析工作
mysqlbinlog --base64-output=DECODE-ROWS -v mysq 2018-04-15
下面是MYSQL占用CPU高处理的一个例子,希望对遇到类似问题的朋友们有点启发。一般来说MYQL占用CPU高,多半是数据 2018-04-15
Mysql占用CPU过高的时候,该从哪些方面下手进行优化?
占用CPU过高,可以做如下考虑:
1)一般来讲,排除高并发 2018-04-15
更改后如下:
innodb_buffer_pool_size=576M ->256M InnoDB引擎缓冲区占了大头,首要就是拿它开刀
query_c 2018-04-15
朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysqld-nt exe) CPU 占用率总 2018-04-15
发现此主机运行了几个 Discuz 的论坛程序, Discuz论坛的好几个表也存在着这个问题。于是顺手一并解决,cpu占 2018-04-15