zoukankan      html  css  js  c++  java
  • 《MySQL慢查询优化》之慢SQL日志获取与分析

    1、什么是慢查询

      慢查询,顾名思义为执行比较慢的SQL查询。默认情况下,MySQL是关闭慢查询日志的,因为开启慢查询日志一定程度上会影响数据库性能。

    MySQL提供了慢查询日志记录功能,用于记录执行时间超过参数long_query_time阈值的SQL执行日志,同时可以自定义配置、关闭、开启慢查询日志,用以帮助MySQL使用者更好的分析慢查询SQL,便于开展SQL性能优化工作。 

    2、如何开启慢查询日志

    •  查看是否开启日志

    show variables like '%slow_query_log%';

    • 开启/关闭日志

    set global slow_query_log=1; //开启
    
    set global slow_query_log=0; //关闭
    • 开启效果

      MySQL开启慢查询日志之后,会自动记录执行时间超过参数long_query_time的SQL日志,参数long_query_time默认数值为10s

     show variables like 'long_query_time%'; 
    
     show global variables like 'long_query_time%';// 实时查看修改之后的参数值,不需要重新创建会话。

    3、如何配置慢查询日志

    • 修改慢查询阈值

    set global long_query_time=5
    • 如何查找慢查询日志

     show global variables like 'slow_query_log_file%';

    • 如何统计慢查询记录数量

    show global status like '%Slow_queries%';

    4、如何永久配置慢查询日志

      实际上,上文对慢查询日志的配置都是基于命令set操作,这些配置在MySQL重启之后都会失效。MySQL对这些参数的设置都是有相应的配置文件进行管理,

    • Linux,默认在/etc/my.cnf。
    • Windows,默认在my.ini。

    打开配置文件,包含慢查询相关参数,可以自定义修改:

       因此,可以通过修改MySQL配置文件来永久配置慢查询日志。

    但是不建议这样做,因为开启慢查询日志会造成MySQL性能受到一定影响,一般情况只是在SQL调优阶段开启慢查询日志。

    5、日志分析工具

      MySQL提供了日志分析工具mysqldumpslow,帮助使用者自动化分析慢查询日志,将分析结果按照参数所指定的顺序输出。

    常见参数:

    • r:返回记录
    • t: 查询时间
    • c: 访问次数
    • -t:即为返回前面多少条的数据
    • -s: 是表示按照何种方式排序
    • -g:后边搭配一个正则匹配模式,大小写不敏感的

    通常,命令可以结合 | 和 less、more 等其他命令使用,便于参看。

    常见使用:

    • 获取访问次数最多的前10个SQL: mysqldumpslow -s c -t 10 /var/lib/mysql/mysql-slow.log | less
    • 获取返回记录集最多前10个SQL: mysqldumpslow -s r -t 10 /var/lib/mysql/mysql-slow.log | less
    • 获取按照时间排序的前10条含有左连接的SQL: mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/mysql-slow.log | more
  • 相关阅读:
    MYSQL 神奇的操作insert into test select * from test;
    mysql排序字段为空的排在最后面
    Redis有效时间设置及时间过期处理
    Dom4j 使用简介
    ASP.NET中使用多个runat=server form(转)
    谨以此文献给才毕业25年的朋友(转)
    门户网站
    庄思浩和BEA公司
    是什么限制了我们面向对象(的开发) (转)
    模态窗口和非模态窗口
  • 原文地址:https://www.cnblogs.com/gavincoder/p/14056769.html
Copyright © 2011-2022 走看看