windows下mysql5.6.20使用mysqldumpslow.pl分析慢日志

    要想运行mysqldumpslow.pl(这是perl程序),下载perl编译器。下载地址:http://pan.baidu.com/s/1i3GLKAp

    就是ActivePerl_5.16.2.3010812913.msi,一步一步安装后,将bin加入环境变量path。

    现在假设一个场景:现场的slow.log拿回来了,要在本地的windows环境上的mysql上分析,如何处理?

C:\Program Files\MySQL\MySQL Server 5.6\bin>perl mysqldumpslow.pl --help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
  --verbose    verbose
  --debug      debug
  --help       write this text to standard output


  -v           verbose
  -d           debug
  -s ORDER     what to sort by (al, at, ar, c, l, r, t), 'at' is default
                al: average lock time
                ar: average rows sent
                at: average query time
                 c: count
                 l: lock time
                 r: rows sent
                 t: query time
  -r           reverse the sort order (largest last instead of first)
  -t NUM       just show the top n queries
  -a           don't abstract all numbers to N and strings to 'S'
  -n NUM       abstract numbers with at least n digits within names
  -g PATTERN   grep: only consider stmts that include this string
  -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),
               default is '*', i.e. match all
  -i NAME      name of server instance (if using mysql.server startup script)
  -l           don't subtract lock time from total time

1. -s,排序,c,t,l,r以及ac,at,al,ar分别是按照query次数,时间,lock时间,返回记录排序。加a就是倒序。
2. -t,top n,跟上数字就是算出top多少条
3. -g,跟正则表达式。

 C:\Program Files\MySQL\MySQL Server 5.6\bin> mysqldumpslow.pl -r -s c -a -t    > E:\slow.txt

 如果执行这个会报错,就按照报错信息来,在my.ini中添加一些参数即可。分析的结果在slow.txt中,如下:

Count: 23  Time=505.55s (11627s)  Lock=0.00s (0s)  Rows=30740.8 (707039), username[password]@[10.194.172.41]
  SELECT DISTINCT u.name,o.full_name FROM pub_user u,pub_user_org uo,pub_org o WHERE  u.user_id=uo.user_id
  AND uo.org_id=o.org_id and u.del_flag=N and uo.del_flag=N
  and u.account not like 'S' and u.account not like 'S' group by u.user_id

Count: 4  Time=375.01s (1500s)  Lock=0.00s (0s)  Rows=10200.3 (40801), username[password]@[10.194.172.41]
  select distinct username,pu.name, po.full_name from pub_login_history as plh
  inner join pub_user as pu on plh.username=pu.user_id
  inner join pub_user_org as puo on pu.user_id=puo.user_id
  inner join pub_org as po on puo.org_id=po.org_id
  where TIMESTAMPDIFF(MINUTE,login_time,logout_time)>=N
  and login_time>'S' and login_time<'S'


Count: 4(执行了多少次)  Time=375.01s(每次执行的时间) (1500s)(一共执行了多少时间)  Lock=0.00s (0s)(等待锁的时间)  Rows=10200.3(每次返回的记录数) (40801)(总共返回的记录数)username[password]@[10.194.172.41]

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 查询日志可以记录执行时间超过指定阈值的 SQL 查询语句,用于帮助 DBA 或开发者监控和优化 SQL 查询性能。 以下是 MySQL 查询日志分析的一般步骤: 1. 开启 MySQL 查询日志。在 MySQL 配置文件中设置 `slow_query_log` 参数为 `ON`,并指定 `slow_query_log_file` 参数为日志文件路径。 2. 查看查询日志。可以使用 `mysqldumpslow` 工具或者其他第三方工具来查看查询日志,例如: ``` mysqldumpslow -s t /path/to/slow_query_log_file ``` 上面的命令会按照时间排序并显示执行时间最长的 SQL 查询语句。 3. 分析查询语句。对于执行时间较长的 SQL 查询语句,可以进行如下分析: - 检查 SQL 查询语句是否存在索引。可以使用 `EXPLAIN` 命令或者其他第三方工具来查看 SQL 查询语句的执行计划,判断是否存在全表扫描或者索引失效等问题。 - 检查 SQL 查询语句的优化方式。可以考虑对 SQL 查询语句进行重构,使用更优的语法或者查询方式,例如使用 JOIN、子查询等方式来替代多次查询。 - 检查 MySQL 数据库的配置参数。可以根据查询语句的特点来调整 MySQL 数据库的配置参数,例如 `innodb_buffer_pool_size`、`max_connections`、`query_cache_size` 等参数。 4. 优化查询语句。根据分析结果,对 SQL 查询语句、MySQL 数据库配置参数等进行优化,提高查询性能。 总之,MySQL 查询日志分析需要结合实际情况和经验进行,需要不断地监控和优化,以提高 MySQL 数据库的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值