mysql监控优化(三)慢查询

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

一、配置慢查询web

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

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

                                                    log-queries-not-using-indexes (log下来没有使用索引的query,能够根据状况决定是否开启)
Windows:
在my.ini的[mysqld]添加以下语句:log-slow-queries = E:\web\mysql\log\mysqlslowquery.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服务。spa

二、查询mysql慢查询状态日志

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

    

三、解析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

   

相关文章
相关标签/搜索