千家信息网

MySQL中如何启用并分析慢查询日志

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,MySQL中如何启用并分析慢查询日志,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Mysql有一项功能可以记录长时间查询
千家信息网最后更新 2026年11月01日MySQL中如何启用并分析慢查询日志

MySQL中如何启用并分析慢查询日志,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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

MySQL的慢查询日志由long_query_time和min_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变量的取值如下:

  • TABLE: (默认)向mysql.general_log表写入一般查询,向表mysql.slow_log写入慢速查询 。

  • FILE:将一般和慢速查询日志写入文件系统。

  • NONE - 禁用日志记录。

还有general_log_file与slow_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';

慢查询日志相关的变量

  • slow_query_log - 启用/禁用慢查询日志

  • log_output - 如何写入输出

  • slow_query_log_file - 慢查询日志文件的名称

  • long_query_time - 定义慢查询的时间(以秒/微秒为单位)

  • log_queries_not_using_indexes - 是否记录不使用索引的查询

  • log_slow_admin_statements - 是否记录某些管理语句

  • log_slow_disabled_statements - 不应记录在慢查询日志中的语句类型

  • min_examined_row_limit - 查询必须检查的最小行数才能变慢

  • log_slow_rate_limit - 允许记录一部分慢查询

  • log_slow_verbosity - 日志中的详细信息量

  • log_slow_filter - 限制要记录的查询

分析慢查询

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

# mysqldumpslow -a mysql-slow.logReading mysql slow query log from mysql-slow.logCount: 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 databasesCount: 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 usersCount: 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 1Count: 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

他的参数如下

  • -s ,按照什么方式起来排序。默认at,也就是按照平均查询时间来排序。都是按照倒序排列。

    al: average lock time 平均锁定时间

    ar: average rows sent 平均返回行数

    at: average query time 平均查询时间

    c: count 总执行次数

    l: lock time 总锁定时间

    r: rows sent 总返回行数

    t: query time 总查询时间

  • -t ,show the top n queries,显示前多少名的记录

  • -a ,默认不开启这个选项。mysqldumpslow将相似的SQL的值(字符串或者数字)替换为N,开启该选项,则显示真实值。不开启该选项,有点类似于Oracle的绑定变量的记录。\

  • -g ,类似于grep命令,过滤出需要的信息。如,只查询A表的慢查询记录。\

  • -l ,总时间中包含锁定时间

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

查询 日志 时间 变量 文件 系统 分析 功能 就是 输出 最小 代表 位置 信息 名称 工具 情况 方式 服务器 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网络科技 南京欣网互联网络科技有限公司 山东特亿宝互联网科技有限公司 西安纸贵互联网科技有限公司 为想互联网科技怎么样 互联网 科技 北京互联网络科技有限公司 四川狮子座互联网科技 卓越科技互联网 招聘 深圳市运趣互联网科技有限公司 随着互联网科技发展 互联网科技与大数据专业 健康食品互联网创新科技园项目 互联网金融科技展 中国互联网公司排名锤子科技 互联网金融科技名词解释 互联网科技数字货币 上海乐五互联网科技有限公司 互联网领先科技成果宣传视频 北京路客互联网科技有限公司 互联网科技公司官网 菲比寻常互联网科技 互联网科技类展会 互联网实体化科技化 互联网金融科技公司干啥的 昊天互联网科技有限公司 工业互联网展湾科技股份有限公司 易企秀互联网科技是做什么的 米泉互联网科技专业怎么样
0