• mysql监控优化(三)慢查询


            顾名思义,慢查询日志中记录的是执行时间较长的query,也就是我们常说的slowquery,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名。慢查询日志采用的是简单的文本格式,可以通过各种文本编辑器查看其中的内容。其中记录了语句执行的时刻,执行所消耗的时间,执行用户,连接主机等相关信息。MySQL 还提供了专门用来分析满查询日志的工具程序mysqlslowdump,用来帮助数据库管理人员解决可能存在的性能问题。

    1、配置慢查询

    Linux:
    在mysql配置文件my.cnf中增加:log-slow-queries=/opt/data/slowquery.log (指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log)

                                                        long_query_time=2 (记录超过的时间,默认为10s)

                                                        log-queries-not-using-indexes (log下来没有使用索引的query,可以根据情况决定是否开启)
    Windows:
    在my.ini的[mysqld]添加如下语句:log-slow-queries = E:webmysqllogmysqlslowquery.log   

                                                          long_query_time = 2(其他参数如上)

    慢查询的配置也可以通过执行命令来设置,这样就不用重启mysql服务了。

    set global slow_query_log=on;
    set global long_query_time=1;#设置记录查询超过多长时间的sql
    set global slow_query_log_file=‘/opt/data/slow_query.log’;#设置mysql慢查询日志路径,此路径需要有写权限
    这种方式不用重启mysql服务。

    2、查询mysql慢查询状态

          SHOW VARIABLES LIKE '%query%';
          使用这个语句可以看到当前mysql慢查询是否开启,以及mysql的慢查询日志文件在哪。
          slow_query_log #是否开启慢查询
         slow_query_log_file #日志的存放位置
         long_query_time #超过多少秒的查询就写入日志

        

    3、解析mysql慢查询日志

         使用mysqldumpslow命令可以解析mysql慢查询日志。
         Mysqldumpslow命令参数如下:
         -s,是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
         -t,是top n的意思,即为返回前面多少条的数据;
         -g,后边可以写一个正则匹配模式,大小写不敏感的;

     

        比如说要按照sql执行时间最长的前20条sql
        mysqldumpslow -s t -t 20 -g 'select'/opt/data/slowquery_2016050921.log
        得到按照时间排序的前10条里面含有左连接的查询语句。
        mysqldumpslow -s t -t 10 -g 'left join'/opt/data/slowquery_2016050921.log

       

     

  • 相关阅读:
    php常见的数据类型
    PHP基础语法
    php表单处理
    php操作mongodb基础语法
    php连接MongoDB数据库,对数据库的增删改查
    Linux常见命令
    python操作redis——基本安装和启动
    MySQL简单的存储图片信息
    基本的位运算
    OS七层模型解析
  • 原文地址:https://www.cnblogs.com/mululu/p/9057018.html
Copyright © 2020-2023  润新知