• mysql17-sql优化-慢查询日志


    1.什么是慢查询日志
    MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,会被记录到慢查询日志中,long_query_time的默认值为10,意思是运行10秒以上的语句。默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置相关参数slow_query_log。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件

    2.开启慢查询日志

    2.1查看参数

    SHOW VARIABLES LIKE '%slow_query_log%'

     如果是off,需要手动开启

    2.2开启

    SET  GLOBAL slow_query_log = 1

    2.3查看时长阀值

    SHOW VARIABLES LIKE '%long_query_time%'

     默认是10秒,但是我们不会允许sql这么长的时间,一般需要调小

    2.4设置时长阀值

    SET  GLOBAL long_query_time = 2

    这里设置好了,打开新的连接窗口查看,值才会更新

    3.查询当前系统中有多少条慢查询记录

    show global status like '%Slow_queries%';

    4.慢查询日志路径

    SHOW VARIABLES LIKE '%slow_query_log_file%'

    5.日志分析工具mysqldumpslow

    在生产环境中,如果要手工分析慢查询日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow。

    5.1语法格式

    mysqldumpslow [ OPTS... ] [ LOGS... ]  -- 后跟参数以及log文件的绝对地址;

    5.2参数

    1)s: 是表示按照何种方式排序;

    2)c: 访问次数

    3)l: 锁定时间

    4)r: 返回记录

    5)t: 查询行数

    6)al:平均锁定时间

    7)ar:平均返回记录数

    8)at:平均查询时间

    9)t:即为返回前面多少条的数据;

    10)g:后边搭配一个正则匹配模式,大小写不敏感的;

    5.3示例

    1)得到返回记录集最多的10个SQL

    mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log


    2)得到访问次数最多的10个SQL

    mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log


    3)得到按照时间排序的前10条里面含有左连接的查询语句

    mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/atguigu-slow.log


    4)另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现爆屏情况

    mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more



     

  • 相关阅读:
    Hello World!
    Nginx加权轮询算法
    git常用命令
    linux命令
    sql 表值函数与标量值函数
    数据查询和操纵时连接的打开状态
    插入一条和上一条数据关联的数据
    C# 输出24小时格式时间
    c#中用sql存储过程
    AndroidManifest.xml文件解析
  • 原文地址:https://www.cnblogs.com/jthr/p/15393131.html
Copyright © 2020-2023  润新知