1、首先安装好perl环境。


2、在dos环境中,切换到perl目录中,例如我的目录是


在Windows中mysqldump命令行指定密码_Time


dos 命令 cd c:\Perl\bin

3、在此目录输入perl mysqldumpslow的路径\mysqldumpslow.pl+mysqldumpslow命令 +slow.log的路径+输出的地方
例如:我的mysqldumpslow目录为


在Windows中mysqldump命令行指定密码_Time_02


slow.log的目录为C:\Perl\bin\slow.log

输出的文件为time .txt,目录为E:\

在Windows中mysqldump命令行指定密码_Time_03



注意:路径不能有空格。

我的使用结果:

在Windows中mysqldump命令行指定密码_sql语句_04

然后去aaa.txt查看结果

mysqldumpslow的命令参数列举如下:

--help    输出帮助信息

-v           输出详细信息 
-d          调试
-s          按照什么排序,默认是'at',显示顺序为倒序
              al: 平均锁表时间

ar: 平均结果行数
                at: 平均查询时间
                 c: 次数
                 l: 锁表时间
                 r: 总结果行数
                 t: 总查询时间  
 -r          正序排序,即从小到大排序

-t NUM       限制显示的条数

-a           显示出数字和字符串,默认数字为 N 字符串为 'S'
-g PATTERN   过滤字符串,后接正则表达式,如'10$' 以10为结尾的条件

例子:

/usr/local/MySQL/bin/mysqldumpslow -s t -a -t 3   slow.txt

根据总查询时间排序,只列出前3条

/usr/local/mysql/bin/mysqldumpslow -r -s c -a -t 3 -g 'hello'   slow.txt

搜索包括关键字 hello的结果,并按照次数正序排序前3条







使用:

转自:http://blog.sina.com.cn/s/blog_8d4a23fe0102vkmj.html

Mysqldumpslow的用法汇总

mysqldumpslow --help可显示其参数的使用


经常使用的参数:

-s,是order的顺序

al  平均锁定时间

ar  平均返回记录时间

at  平均查询时间(默认)

c  计数

l    锁定时间

r    返回记录

t   查询时间

-t,是top n的意思,即为返回前面多少条的数据

-g,后边可以写一个正则匹配模式,大小写不敏感的

例子:

mysqldumpslow -t 10 -s t -g “left join” host-slow.log

使用mysqldumpslow的分析结果不会显示具体完整的sql语句,说明:

1:假如真正的sql语句如下:

SELECT * FROM sms_send WHERE service_id=10 GROUP BY content LIMIT 0, 1000;

mysqldumpslow显示的结果会是:

Count: 1  Time=1.91s (1s)  Lock=0.00s (0s)  Rows=1000.0 (1000), vgos_dba[vgos_dba]@[10.130.229.196]
SELECT * FROM sms_send WHERE service_id=N GROUP BY content LIMIT N, N;

2:如果我们再执行一条

SELECT * FROM sms_send WHERE service_id=20 GROUP BY content LIMIT 10000, 1000;

mysqldumpslow显示的结果会是:

Count: 2  Time=2.79s (5s)  Lock=0.00s (0s)  Rows=1.0 (2), vgos_dba[vgos_dba]@[10.130.229.196]

SELECT * FROM sms_send WHERE service_id=N GROUP BY content LIMIT N, N;

虽然这两条语句条件不一样,

1:一个是server_id=10,一个是server_id=20

2:一个是LIMIT 0, 1000,一个是LIMIT 10000, 1000

但是mysqldumpslow分析会认为这是一种类型的语句,会合并显示。

3:假设我们执行

SELECT * FROM sms_send WHERE service_id<=10 GROUP BY content LIMIT 0, 1000;

执行mysqldumpslow结果是

Count: 1  Time=2.91s (2s)  Lock=0.00s (0s)  Rows=1000.0 (1000), vgos_dba[vgos_dba]@[10.130.229.196]

SELECT * FROM sms_send WHERE service_id<=N GROUP BY content LIMIT N, N;

可以看出它和上面我们写的sql语句是两种类型

mysqldumpslow的分析结果

Count会告诉我们这种类型的语句执行了几次

Time会告诉我们这种类型的语句执行的最大时间

Time=2.79s (5s)中(5s)是指这类型的语句执行总共花费的时间

例:

Count: 2  Time=2.79s (5s)  Lock=0.00s (0s)  Rows=1.0 (2), vgos_dba[vgos_dba]@[10.130.229.196]

告诉我们执行了2次

最大时间是2.79s

总共花费时间5s

lock时间0s

单次返回的结果数是1条记录

2次总共返回2条记录

mysqldumpslow -s t -t 10 slow.log

查询的结果是10条执行时间最慢的sql语句,其中-s t是指此类类型的语句的执

行总时长

Count: 1  Time=2.91s (2s)  Lock=0.00s (0s)  Rows=1000.0 (1000), vgos_dba[vgos_dba]@[10.130.229.196]


Count: 2  Time=2.79s (5s)  Lock=0.00s (0s)  Rows=1.0 (2), vgos_dba[vgos_dba]@[10.130.229.196]

比较的结果是

Count: 2  Time=2.79s (5s)  Lock=0.00s (0s)  Rows=1.0 (2), vgos_dba[vgos_dba]@[10.130.229.196]

排在前面,因为比较的时长是(5s)和(2s),而不是2.79s和2.91s

-s at比较的也是(5s)/count:2和(2s)/Count: 1

所以:-s at是

Count: 1  Time=2.91s (2s)  Lock=0.00s (0s)  Rows=1000.0 (1000), vgos_dba[vgos_dba]@[10.130.229.196]

排在前面。

Rows=1.0 (2) 是按照以下逻辑展示的

(2)是指在Count: 2次数总共返回了2条记录集;row=1.0显示(2)/Count: 2,

如果此时Count是3,那么row的计算方式是Rows=2/3,Rows=0.67

主要功能是, 统计不同慢sql的出现次数(Count),执行最长时间(Time),累计总耗费时间(Time),等待锁的时间(Lock),发送给客户端的行总数(Rows),扫描的行总数(Rows)