zoukankan      html  css  js  c++  java
  • MySQL设置慢查询

      MySQL的慢查询日志是用来记录在MySQL中响应时间超过阀值的语句,则会被记录到慢查询日志中(运行时间超过long_query_time值的SQL语句);

    •    慢查询相关参数:
    slow_query_log    :是否开启慢查询日志,1表示开启,0表示关闭;
    
    log-slow-queries  :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log;
    
    slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log;
    
    long_query_time :慢查询阈值,当查询时间多于设定的阈值时,会将当前执行的SQL记录到日志中;
    
    log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项);
    
    log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值是'FILE';
    log_output='TABLE'表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,
    如:log_output='FILE,TABLE'。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件;
    •   日志分析工具
      1. mysqldumpslow是mysql官方提供的perl脚本,只要安装有mysql的环境就可以用
        # mysqldumpslow --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

           参数说明:

    -s, 是表示按照何种方式排序
        c: 访问计数
        l: 锁定时间
        r: 返回记录
        t: 查询时间
        al:平均锁定时间
        ar:平均返回记录数
        at:平均查询时间
    -t, 是top n的意思,即为返回前面多少条的数据;
    -g, 后边可以写一个正则匹配模式,大小写不敏感的;
    

           使用例子:

    得到返回记录集最多的10个SQL
    mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
    
    得到访问次数最多的10个SQL
    mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
    
    得到按照时间排序的前10条里面含有左连接的查询语句
    mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log
    
    另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况;
    mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
    

           

        2.mysqlsla,是hackmysql.com推出的一款日志分析工具,能生成数据报表, 包括执行频率, 数据量, 查询消耗等

        使用例子:

    mysqlsla -lt slow mysql-slow.log
    
    mysqlsla -lt slow mysql-slow.log -sf “+SELECT” -db dbName -top 10 -sort t_sum  –top=10 

        

        mysqlsla参数意义:
          lt:表示日志类型,有slow, general, binary, msl, udl。
          sf:[+-][TYPE],[TYPE]有SELECT, CREATE, DROP, UPDATE, INSERT,例如”+SELECT,INSERT”,不出现的默认是-,即不包括。
          db:要处理哪个库的日志。
          top:表示取按规则排序的前多少条。
          sort:按某种规则排序,t_sum按总时间排序, c_sum按总次数排序

        mysqlsla输出格式说明:

    #mysqlsla输出格式说明:
    queries total: 总查询次数,unique: 去重后的sql数量
    Sorted by: 输出报表的内容排序
    Count         : sql的执行次数及占总的slow log数量的百分比
    Time          : 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比
    95% of Time   : 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间
    Lock Time     : 等待锁的时间
    95% of Lock   : 95%的慢sql等待锁时间
    Rows sent     : 结果行统计数量, 包括平均, 最小, 最大数量
    Rows examined : 扫描的行数量
    Database      : 属于哪个数据库
    Users         : 哪个用户,IP,占到所有用户执行的sql百分比
    Query abstract: 抽象后的sql语句
    Query sample  : sql样例语句
    

      

      

  • 相关阅读:
    uniapp 微信小程序
    vue3获取当前路由
    常用网址
    (转)maven引入本地jar包的方法
    转:maven打包加时间戳方法总结
    Vue封装一个仿淘宝分页组件
    使用GitHub Actions自动构建DockerHub镜像
    luminati代理快速使用教程
    Redis Cluster 部署、在线扩容、缩容、迁移、集群管理实践
    Docker安装RabbitMQ以及无权限访问 vhost '/' 的解决方法
  • 原文地址:https://www.cnblogs.com/coder-zyc/p/10133532.html
Copyright © 2011-2022 走看看