用mysqldumpslow分析mysql的slow query log

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语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。

时间: 2024-10-06 15:07:18

用mysqldumpslow分析mysql的slow query log的相关文章

mysql中slow query log慢日志查询分析

一.慢查询日志 配置 开启慢查询日志 , 配置样例: /etc/mysql/my.cnf [mysqld] log-slow-queries 在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效.慢查询 日志将写入参数 DATADIR (数据目录:/var/lib/mysql) 指定的路径下,默认文件名是 host_name-slow.log . 和错误日志.查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取.下例中演示了慢查询日志的设置

MySQL 慢查询日志(Slow Query Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.本文主要描述通用查询日志.   1.MySQL日志文件系统的组成   a.错误日志:记录启动.运行或停止mysqld时出现的问题.   b.通用日志:记录建立的客户端连接和执行的语句.   c.更新日志:记录更改数据的语句

mysql dba系统学习(9)slow query log慢查询日志功能

慢查询日志(不包括获取锁的时间) 1,开启慢查询日志功能 以前的版本中开启慢查询日志功能的参数是--log_slow_queries在my.cnf文件中指定,但是现在新的版本中用参数--slow_query_log和--slow_query_log_file来指定 slow_query_log=1 slow_query_log_file=/tmp/mysqlslow.log 重新启动mysql mysql> show variables like "%slow%"; +-----

mySQL Slow Query Log Rotation(慢查询日志轮循设置)

要分析公司网站MYSQL性能,常规MY.CNF调优是一方面,慢查日志分析也重要. 但现在日志太大了,作一个每天自动切割的任务.将脚本放在/etc/logrotate.d/. 如何分析导出日志,以后再写. # place this script in /etc/logrotate.d/ or your appropriate logrotate dir. ~~~~~~~~~~~~~~~~~~ /var/log/XXX_MYSQL_slow.log {     daily     rotate 5

【原创】MySQL 之 slow log

慢查询有什么用?         它能记录下所有执行超过long_query_time时间的SQL语句,帮你找到执行慢的SQL,方便我们对这些SQL进行优化.    测试用 MySQL 版本.   Server version: 5.6.10-log Source distribution    未做任何慢日志设置时.    ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 mysql> show variables like "

mysql使用slow log中出现大量的binlog dump记录

线上有个数据库,在slow log中,存在大量类似下面的记录:  代码如下 复制代码 # Time: 130823 13:56:08 # User@Host: repl[repl] @ slave [10.x.x.x] # Query_time: 9.000833 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1 SET timestamp=1377237368; # administrator command: Binlog Dump; 每完成

每天将MYSQL SLOW QUERY REPORT分发到各个邮箱供分析改善数据库性能-PYTHON

/var/spool/cron/下面加入自动任务: 50 3 * * * mysqlsla -sort c_sum -lt slow /var/log/XXX_slow.log >/var/log/XXX_mysql_slow.log 10 4 * * * python /XXX/XXX_slow_report/mail_mysql_slow_report.py   mail_mysql_slow_report.py代码如下: 1 from smtplib import SMTP 2 impor

MySQL slow query [慢查询] 资料整理

链接:http://blog.itpub.net/28602568/viewspace-1650130/ 标题: MySQL slow query [慢查询] 资料整理 作者:lōττéry版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.] 前言: MySQL中提供了一个慢查询的日志记录功能,可以把查询SQL语句时间大于多少秒的语句写入慢查询日志,日常维护中可以通过慢查询日志的记录信息快速准确地判断问题所在.  (有点类似 oracle的v$session_longops 

MySQL 通用查询日志(General Query Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分.MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等.本文主要描述通用查询日志.   1.MySQL日志文件系统的组成   a.错误日志:记录启动.运行或停止mysqld时出现的问题.   b.通用日志:记录建立的客户端连接和执行的语句.   c.更新日志:记录更改数据的语句