ddxiami

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2704|回复: 0

[文章] Mysql(Mariadb)慢查询日志中long_query_time 与log_queries_not_using_...

[复制链接]
发表于 2020-8-28 16:44:11 | 显示全部楼层 |阅读模式

原文地址:https://blog.csdn.net/yaqiang2017/article/details/104824185


long_query_time:慢查询日志记录超时的时间,无论是不是有索引,单位秒。

log_queries_not_using_indexes:慢查询日志记录没有使用索引的记录,无论是否超时long_query_time。

min_examined_row_limit:慢查询日志仅仅记录扫描行数超过行min_examined_row_limit的记录(不包括该参数值本身,是大于该参数值的扫描行)。

综合分析:
记录日志关系 =  (long_query_time  || log_queries_not_using_indexes)&& min_examined_row_limit
可见即使满足超时条件,如果不满足扫描行数条件,也不会记录,因此这个参数要慎用。可见如果以上公式中三个参数都开启,那么满足下面2个条件其中之一才会被记录。
1.我们有只有超时 且 扫描行数大于min_examined_row_limit时候才会被记录。
2.我们有只有没有使用索引 且 扫描行数大于min_examined_row_limit时候才会被记录。

注意的问题:

Tags1:min_examined_row_limit有会话变量和全局变量,动态改变参数值的时候需要分别进行修改,实测过程中改变全局变量(set global min_examined_row_limit=100)不会同步改变会话变量(set min_examined_row_limit=100),因此必须手动改变会话变量,才会对当前会话有效。
Tags2:需要注意的是min_examined_row_limit检测的行数有时候与explain的有些出入,有时候同一个语句,explain显示的select_type=simple的扫描行数rows与慢查询日志中记录的Rows_examined:不一样,后者会多500行左右,不知道为何  


下面是Mariadb 5.5.64服务器上进行测试的相关代码:
explain select * from hpx_member where u_id = 888444;#u_id 有索引测试
explain select * from hpx_member where major = '8881';#major没有索引测试
explain select * from hpx_member where  phone like '15933%';#phone有索引测试,测试扫描行数与min_examined_row_limit关系
select * from hpx_member where  phone like '1593356%';
show global VARIABLES like '%index%'
show   VARIABLES like '%index%'
show global VARIABLES like '%min_examined_row_limit%'
show  VARIABLES like '%min_examined_row_limit%'
show   VARIABLES like '%long_query_time%'
set global  long_query_time=0.0001
set global  log_queries_not_using_indexes=off
set global  min_examined_row_limit=0
set   min_examined_row_limit=50
select sleep(2),8888;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|技术文档库 ( 闽ICP备15017263号-2 )|网站地图

GMT+8, 2025-5-18 19:56 , Processed in 0.035034 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表