[转]用mysqldumpslow分析mysql的slow query log

标签: Storage | 发表时间:2012-01-16 09:45 | 作者:Hins_pan
分享到:
出处:http://hi.baidu.com/hins%5Fpan

mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行

long_query_time = 1
log-slow-queries = /var/youpath/slow.log
log-queries-not-using-indexes

long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件 host_name-slow.log,我生成的log就在mysql的data目录
log-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。

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

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

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。

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


类别: Storage  查看评论

相关 [mysqldumpslow 分析 mysql] 推荐:

[转]用mysqldumpslow分析mysql的slow query log

- - 小彰
mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数. 如果在my.cnf里面修改,需增加如下几行. long_query_time 是指执行超过多久的sql会被log下来,这里是1秒. log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件 host_name-slow.log,我生成的log就在mysql的data目录.

MySQL锁表机制分析

- - 小彰
为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制. MySQL有三种锁的级别:页级、表级、行级. MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level. locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁.

MySQL锁阻塞分析

- - CSDN博客数据库推荐文章
日常维护中,经常会碰到线程被阻塞,导致数据库响应非常慢,下面就看看如何获取是哪个线程导致了阻塞的. blog地址: http://blog.csdn.net/hw_libo/article/details/39080809. 3.1  使用show processlist查看. | | 3 | root | localhost | test | Query | 70 | Sending data | select count(*) from t3 a,t3 b.

MySQL执行状态分析

- - CSDN博客推荐文章
当感觉mysql性能出现问题时,通常会先看下当前mysql的执行状态,使用 show processlist 来查看,例如:. 其中state状态列信息非常重要,先看下各列含义,然后看下state常用状态. 一个标识,你要kill一个语句的时候使用,例如 mysql> kill 207;.

mysql优化之profile查询分析

- - 数据库 - ITeye博客
通过慢日志查询可以知道哪些SQL语句执行效率低下,通过explain我们可以得知SQL语句的具体执行情况,索引使用等,还可以结合show命令查看执行状态. 如果觉得explain的信息不够详细,可以同通过 profiling命令得到更准确的SQL执行消耗系统资源的信息. 这里还需要注意一点就是,需要安装profile模块才能实现.

PHP查询MySQL大量数据的内存占用分析

- Avenger - OurMySQL
这篇文章主要是从原理, 手册和源码分析在PHP中查询MySQL返回大量结果时, 内存占用的问题, 同时对使用MySQL C API也有涉及.. 昨天, 有同事在PHP讨论群里提到, 他做的一个项目由于MySQL查询返回的结果太多(达10万条), 从而导致PHP内存不够用. 所以, 他问, 在执行下面的代码遍历返回的MySQL结果之前, 数据是否已经在内存中了.

生成MySQL性能数据分析报告的Shell脚本

- EricSheng - MySQLOPS 数据库与运维自动化技术分享
【导读】 MySQL开源产品有非常丰富的分享出来可用的资源,比如本文要介绍的内容:如何每天简单地获得MySQL性能数据的报告,我们就可以利用perl脚本工具mysqlreport生成详细的性能数据分析报告,再借助sendEmail工具以邮件的方式发送出来,从而提高我们的工作效率,上期给大家介绍了SHELL脚本Get_Local_Kpi对我们工作的帮助.

MySQL数据库性能优化之硬件瓶颈分析

- - Sky.Jian 朝阳的天空
接着上一篇 MySQL数据库性能优化之存储引擎选择,这是 MySQL数据库性能优化专题 系列的第六篇文章: MySQL数据库性能优化之硬件优化. 在过往与很多人的交流过程中发现,在谈到基于硬件来进行数据库性能瓶颈分析的时候,常被大家误解为简单的使用更为强劲的主机或者存储来替换现有的设备. 个人觉得这其中可能存在一个非常大的误区.

<转>Mysql 慢查询和慢查询日志分析

- - 数据库 - ITeye博客
原链接:http://www.cnblogs.com/wrmfw/archive/2011/09/05/2166929.html. 众所周知,大访问量的情况下,可添加节点或改变架构可有效的缓解数据库压力,不过一切的原点,都是从单台mysql开始的. 下面总结一些使用过或者研究过的经验,从配置以及调节索引的方面入手,对mysql进行一些优化.

MySQL数据库中char与varchar性能分析

- - 数据库 - ITeye博客
在数据库中,字符型的数据是最多的,可以占到整个数据库的80%以上. 为此正确处理字符型的数据,对于提高数据库的性能有很大的作用. 在字符型数据中,用的最多的就是Char与Varchar两种类型. 前面的是固定长度,而后面的是可变长度. 现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用Varchar字符型数据.