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

MySQL中怎么启用并分析慢查询日志?,第1张

概述MySQL中怎么启用分析慢查询日志? 本篇文章带大家了解一下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变量的取值如下:

table: (默认)向MysqL.general_log表写入一般查询,向表MysqL.slow_log写入慢速查询 。file:将一般和慢速查询日志写入文件系统。NONE – 禁用日志记录。

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

慢查询日志相关的变量

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 ,总时间中包含锁定时间

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

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

以上是内存溢出为你收集整理的MySQL中怎么启用并分析慢查询日志?全部内容,希望文章能够帮你解决MySQL中怎么启用并分析慢查询日志?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1149999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存