• 技术文章 >数据库 >mysql教程

    MySQL中怎么启用并分析慢查询日志?

    青灯夜游青灯夜游2021-09-10 17:38:43转载131
    本篇文章带大家了解一下MySQL中的慢查询,介绍一下启用慢查询日志,并分析慢查询的方法,希望对大家有所帮助!

    Mysql有一项功能可以记录长时间查询的慢记录,具体是多长时间可以自己配置,但是慢查询也未必就是不良的SQL,也可能受其他查询影响,或者是系统资源限制导致的,它也是我们常用的性能分析工具。【相关推荐:mysql视频教程

    MySQL的慢查询日志由long_query_timemin_examined_row_limit控制的,前者意思是如果查询花费的时间超过这么多秒,MySQL服务器就是在启用慢查询日志的情况下,将这条记录到慢查询日志文件中。

    启用慢查询日志

    要在 MySQL 中启用慢查询日志,请按照下列步骤操作:

    首先看看MySQL中关于慢查询的状态。

    MariaDB [(none)]> show variables like '%slow%';
    +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+                                                                                           
    | Variable_name                | Value                                                                                                                                |                                                                                           
    +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+                                                                                           
    | log_slow_admin_statements    | ON                                                                                                                                   |
    | log_slow_disabled_statements | sp                                                                                                                                   |
    | log_slow_filter              | admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
    | log_slow_rate_limit          | 1                                                                                                                                    |
    | log_slow_slave_statements    | ON                                                                                                                                   |
    | log_slow_verbosity           |                                                                                                                                      |
    | slow_launch_time             | 2                                                                                                                                    |
    | slow_query_log               | OFF                                                                                                                                  |
    | slow_query_log_file          | hxl-slow.log                                                                                                                         |
    +------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
    9 rows in set (0.001 sec)

    首先看slow_query_log的状态,他代表慢查询日志是否开启。该值可以是0或OFF表示禁用,1或ON表示启用。日志输出的目的地由log_output系统变量控制,如果该值为NONE,则即使启用了慢查询日志,也不会写入到日志中,log_output变量的取值如下:

    还有general_log_fileslow_query_log_file 变量代表查询日志和慢查询日志文件的名称。可以在服务器启动或运行时设置这些变量。

    启动慢查询日志

    MySQL中默认关闭了慢查询日志功能,因此要打开此功能,我们需要将slow_query_log设置为ON,如下所示。

    SET GLOBAL slow_query_log = 1;

    设置记录时长

    long_query_time变量表示只有运行时间超过此值就会被记录,如下所示,更改时间为5秒,他默认为10秒,最小值为 0。

    SET GLOBAL long_query_time = 5;

    修改输出位置

    默认情况下,慢查询日志文件位于 /var/lib/mysql/hostname-slow.log,我们还可以使用slow_query_log_file变量设置另一个位置。

    SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

    将慢查询日志写入表

    慢查询日志也可以被写入slow_log表中,方式就是上述中所说修改log_output系统变量为TABLE,操作如下:

    SET GLOBAL log_output='TABLE';

    慢查询日志相关的变量

    分析慢查询

    日志记录后,我们还需要分析这些日志,找出影响系统的查询,MySQL提供了一个名为mysqldumpslow的工具,可以简单的显示结果,只需要把日志路径传递给他即可,如下:

    # mysqldumpslow -a mysql-slow.log
    
    Reading mysql slow query log from mysql-slow.log
    Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=21.0 (21), Rows_examined=21.0 (21), Rows_affected=0.0 (0), root[root]@localhost
      show databases
    
    Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=2.0 (2), Rows_examined=2.0 (2), Rows_affected=0.0 (0), root[root]@localhost
      select * from users
    
    Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost
      select @@version_comment limit 1
    
    Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost

    他的参数如下

    原文地址:https://juejin.cn/post/6993221989175394311

    更多编程相关知识,请访问:编程视频!!

    以上就是MySQL中怎么启用并分析慢查询日志?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:MySQL 慢查询
    上一篇:MySQL中什么是游标?如何使用游标? 下一篇:深入了解MySQL中的事务和锁
    线上培训班

    相关文章推荐

    • 详细了解MySQL中的主备、主从和读写分离• 汇总!PHP操作MySQL的常用代码段• 详解MySQL中的count()、union()和group by语句• php7怎么安装mysqli扩展• 浅谈Mysql5.7中怎么搭建主从复制?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网