zoukankan      html  css  js  c++  java
  • mysql中slow query log慢日志查询分析

     在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析每条sql执行的状态与性能从而进行优化了。
    
    一、慢查询日志 配置
    
    开启慢查询日志 , 配置样例:
    
    /etc/mysql/my.cnf
    [mysqld]
    log-slow-queries
    
    在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效。慢查询 日志将写入参数 DATADIR (数据目录:/var/lib/mysql)
    指定的路径下,默认文件名是 host_name-slow.log 。
    和错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取。下例中演示了慢查询日志的设置和读取过程。
    
    1 )首先查询一下 long_query_time 的值 。
    
    mysql> show variables like 'long%';
    +-----------------+-------+
    | Variable_name | Value |
    +-----------------+-------+
    | long_query_time | 10 |
    +-----------------+-------+
    1 row in set (0.00 sec)
    
    ( 2 )为了方便测试,将修改慢查询时间为 5 秒。
    
    mysql> set long_query_time=1;
    Query OK, 0 rows affected (0.02 sec)
    
    以上操作只限于当前有效,关闭服务器得重新设置。下面的方法可直接写入my.cnf
    
    log-slow-queries=/var/lib/mysql/slowquery.log
    
    long_query_time=1
    
    二、mysqldumpslow 的常用参数如下:
    
    -s 后面接下面的参数表示 mysqldumpslow 结果显示的顺序!
    c query执行的次数
    t sql执行的时间
    l lock锁表的时间
    r sql返回的行数
    ac,at,al,ar,表示倒序排列
    -t,是top n,即为返回前面n条数据。
    -g,后边可以写一个正则匹配模式,大小写不敏感
    显示执行时间最长的前两个
    [root@rac3 python]# mysqldumpslow  -s t -t 2 /opt/mysql/data/slowquery.log
    Reading mysql slow query log from /opt/mysql/data/slowquery.log
    Count: 2  Time=412.54s (825s)  Lock=0.00s (0s)  Rows=1.0 (2), root[root]@localhost
      select count(N) from sbtest ,t1 where t1.c=sbtest.c
    Count: 1  Time=778.20s (778s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
      select count(N) from  sbtest where sbtest.id not in ( select id from t1 )
    #显示次数最多的前两个
    [root@rac3 python]# mysqldumpslow  -s c -t 2 /opt/mysql/data/slowquery.log    
    Reading mysql slow query log from /opt/mysql/data/slowquery.log
    Count: 12  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=1.0 (12), root[root]@localhost
      select count(N) from tab_1
    Count: 2  Time=412.54s (825s)  Lock=0.00s (0s)  Rows=1.0 (2), root[root]@localhost
      select count(N) from sbtest ,t1 where t1.c=sbtest.c
    [root@rac3 python]#
  • 相关阅读:
    python进阶(1)--多进程与多线程概念
    mysql数据库(5)--表的相关操作
    mysql数据库(4)--表删除操作
    备注
    mysql数据库(3)--mysql的执行顺序
    mysql数据库(2)--窗口函数之序号函数
    Spring MVC 返回中文乱码
    郁闷,郁闷啊
    Struts2 下载文件
    js文件加载
  • 原文地址:https://www.cnblogs.com/musings/p/5913186.html
Copyright © 2011-2022 走看看