zoukankan      html  css  js  c++  java
  • 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优化,对于慢查询日志的总结,不足之处,请大家指出,谢谢

  • 相关阅读:
    实现一个程序两套快捷键
    SystemC中文教程一
    logback的使用和logback.xml详解
    mysql语句练习50题
    Intellij IDEA中使用Debug调试详解
    用node-webkit把web应用打包成桌面应用
    Idea导入项目详解
    iReport 5.6.0 Error: net.sf.jasperreports.engine.JRException: Error executing SQL statement for : data 最优解决方案
    CentOS 7.X 关闭防火墙
    将 MySQL root 的远程访问密码由空密码改为 password
  • 原文地址:https://www.cnblogs.com/yjc1605961523/p/12112105.html
Copyright © 2011-2022 走看看