• MySQL的慢查询日志


    慢查询日志是什么?

    慢查询日志是MySQL提供的一种专门记录sql执行时间超过预先设置好阈值的语句等信息

    慢查询日志怎么开启?

    慢查询日志是默认关闭的!

    可以通过命令进行查看慢日志的状态

    show variables like '%slow_query_log%';  #查看慢日志状态

     开启慢日志的命令(1代表开启,0代表关闭)

    set global slow_query_log=1; 

    #开启慢日志,只对本次有效,重启之后还是关闭的。

    如果想要永久生效的话,就需要修改my.cnf文件

    在[mysqld]下添加

    slow_query_log=1
    slow_query_log_file=/var/lib/mysql/node-slow.log #这个代表的是慢日志文件存放的路径

    慢日志不在调优的时候一般是关闭的,因为开启慢日志多多少少会降低效率。

    什么样的查询语句才能称为慢查询呢?慢日志会记录什么样的SQL呢?

    这个是由参数long_query_time控制的,此值的默认值为10秒。
    当某一条语句的执行时间大于这个参数值的时候,(等于的话不会被记录),就会被慢日志给记录下来

    SHOW VARIABLES LIKE 'long_query_time%'; #查看设置的时间阈值

     修改long_query_time的值的方法

    set global long_query_time=3; #设置慢查询时间的阈值为3秒

    注意:执行完上面的语句后,在此进行查看的时候,会发现值没有变过来,
    这时候需要重新开一个会话,或者断开连接之后重连,更或者换一条命令进行查询,就可以看到你修改后的值了

    SHOW GLOBAL     VARIABLES LIKE 'long_query_time%';

     当然你也可以使用配置my.cnf文件的方式进行修改,在[mysqld]下添加如下参数(前题是)

    slow_query_log=1
    slow_query_log_file=/var/lib/mysql/node-slow.log #这个代表的是慢日志文件存放的路径
    long_query_time=3;
    log_output=FILE

    模拟一条慢查询语句

    select sleep(4);#在这条sql执行期间,睡眠4秒

    执行完成之后,打开慢日志文件进行查看,如下图所示

     如果我们想要统计一共记录了多少条慢sql语句,可以使用如下命令

    show global status like '%Slow_queries%';

     日志分析工具mysqldumpslow

    常用属性

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

    举个例子:

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

    得到返回记录集最多的10条sql

     这些是本人学习mysql优化,对于慢查询日志的总结,不足之处,请大家指出,谢谢

  • 相关阅读:
    Flutter开发指南之理论篇:Dart语法05(单线程模型,事件循环模型,Isolate)
    跨平台将终结
    一万字详解 Redis Cluster Gossip 协议
    Java实现简单的计算器
    CSDN开发者周刊第 22期:谷歌 DeepMind 第四代:不学规则就可以玩游戏;图灵奖得主 Edmund Clarke 因感染“新冠”逝世;
    理解Python闭包,这应该是最好的例子
    sscanf函数用法详解
    web项目中配置多个数据源
    web项目中配置多个数据源
    动态表格之查看、删除、编辑
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/12112105.html
Copyright © 2020-2023  润新知