MySQL慢查询日志(SlowLog)

一、开启Slow Log

查看慢查询是否开启

show global variables like 'slow_query_log%';
1、动态开启
set global slow_query_log = 1;

设置慢查询日志的路径

set global slow_query_log_file = "/data/mysql/log/mysql-slow.log";

慢查询的阈值

show global variables like 'long_query_time';
2、永久开启

修改配置文件my.cnf

slow_query_log_file   = /data/mysql/log/mysql-slow.log

slow_query_log = 1     # 开启慢查询日志
long_query_time = 1    # 设置慢查询阈值1秒
二、slow log的特殊设置

在 MySQL 中,log_slow_admin_statementslog_queries_not_using_indexesmin_examined_row_limit 是与慢查询日志相关的参数,它们的作用如下:

  1. log_slow_admin_statements

    • 作用:当启用该参数时,MySQL 会将慢的管理类语句记录到慢查询日志中。这些管理类语句包括 ALTER TABLECREATE INDEXDROP INDEXOPTIMIZE TABLE 等。

    • 默认值:默认为关闭(OFF)。

    • 应用场景:通常这些操作会在维护或迁移脚本中运行,因此默认不记录。但如果应用程序动态执行这些操作,启用该参数可以帮助监控这些语句的性能。

  2. log_queries_not_using_indexes

    • 作用:启用该参数后,MySQL 会记录那些未使用索引的查询语句。即使这些查询的执行时间未超过 long_query_time 设置的阈值,它们也会被记录到慢查询日志中。

    • 默认值:默认为关闭(OFF)。

    • 应用场景:此参数有助于识别那些可能需要添加索引以优化性能的查询。但需要注意,启用后可能会显著增加日志的详细程度,尤其是对于繁忙的服务器。

  3. min_examined_row_limit

    • 作用:该参数设置了一个查询必须检查的最小行数,只有达到或超过此值的查询才会被记录到慢查询日志中。这有助于过滤掉那些对性能影响较小的查询,专注于那些可能扫描大量数据的查询。

    • 默认值:默认为 0,即记录所有符合其他条件的查询。

    • 应用场景:通过设置较高的值,可以减少日志中的“噪声”,专注于那些真正可能影响性能的查询。

三、查看慢查询的额外信息的输出

1、开启慢查询额外输出

set global log_slow_extra = on;
四、官方慢查询分析工具mysqldumpslow

1、不加任何选项

mysqldumpslow /data/mysql/log/mysql-slow.log 

2、按查询时间排序

mysqldumpslow -s t -t 5 /data/mysql/log/mysql-slow.log 

这样就显示出,执行时间最长的5条SQL

3、按访问次数排序

mysqldumpslow -s c -t 5 /data/mysql/log/mysql-slow.log 

 

五、Rows_sentRows_examined 指标

在MySQL的慢查询日志中,Rows_sentRows_examined 是两个重要的指标,它们可以帮助我们了解查询的性能和效率。以下是它们的定义和区别:

  1. Rows_sent:表示查询实际返回给客户端的行数。这个值反映了客户端接收到的行数,通常与查询的结果集大小相关。

  2. Rows_examined:表示服务器层检查的行数(不包括存储引擎内部的处理)。这个值反映了MySQL在执行查询时实际扫描的行数,通常与查询的执行计划和索引使用情况有关。

区别

  • Rows_sent 是查询返回给客户端的行数,而 Rows_examined 是查询过程中服务器检查的行数。

  • 如果 Rows_examined 远大于 Rows_sent,这可能表明查询在执行过程中扫描了大量行,但只返回了其中的一部分,这可能是由于查询条件不够精确或索引使用不当导致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值