log_queries_not_using_indexes参数设置

梦莱2年前技术文章2810

【现象】

通过查看慢日志发现有如下信息:


 

如上慢日志里出现较多 'index not used' warning(s) suppressed 信息;该信息主要是因为开启 log_queries_not_using_indexes 参数导致。

throttle:         55 'index not used' warning(s) suppressed.

【详情】

log_queries_not_using_indexes 参数作用:该参数开启后会在慢日志里面记录所有全表扫描或者索引全扫描的 SQL,哪怕它并没有达到 long_query_time;

开启该参数,慢日志可能会出现迅速的增长;可以通过对 log_throttle_queries_not_using_indexes 系统变量设置进行限制。设置情况如下:

log_throttle_queries_not_using_indexes设置为 0 时,意味着没有限制。

log_throttle_queries_not_using_indexes不为0时,每分钟记录的不使用索引sql的数量不能超过该值的限制。记录第一个不使用索引sql的时候会打开一个60s的时间窗口,记录的不使用索引sql数量最多为log_throttle_queries_not_using_indexes条,如果超过这个值,就会阻止记录慢日志。时间窗口结束的时候会记录一条概要,这条概要包括总共有多少条不使用索引sql以及这些不使用索引sql执行花费的总时间。在下一个60s的窗口期开始的时候才会记录下一条不使用索引的慢日志

即慢日志里看到的 throttle: 55 'index not used' warning(s) suppressed. 执行时间是所有全表扫描或者索引全扫描在一分钟内执行的时间的总和,锁表时间也是。

【建议】

目前该实例已开启 SQL 洞察,如果没有特殊需求,可以将 log_queries_not_using_indexes 该参数关闭;该参数仅是为了记录存在全表扫描、索引全扫描的 SQL ,且并不会做特殊记录,目前看暂无较大作用。

【补充】

一、参数设置

1.slow_query_log:将slow_query_log设置为0为禁用慢日志,设置为1以启用慢日志,建议启用

2.slow_query_log_file:设置slow_query_log_file以指定日志文件的名称。如果没有为慢日志文件指定名称,则默认名称为host_name-slow.log。除非为指定了绝对路径名,否则服务器将在数据目录中创建该文件。

 


3.long_query_time:设置执行多长时间的 SQL 被记录到慢日志当中,默认为1s.

4.log_slow_admin_statements:默认慢日志里不会记录 DDL 操作语句,如果需要记录,需要将该参数开启,该部分语句包括ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、OPTIMIZE TABLE和REPAIR TABLE

5.min_everined_row_limit:当查询扫描行数小于此参数设置的数据,该 SQL 将不会记录到慢查询日志中。

二、参数顺序

服务器按以下顺序使用控制参数来确定是否将查询写入慢速查询日志:

1)首先判断 log_slow_admin_statements;如果关闭则过滤掉 DDL 操作语句

2)按照 long_query_time,过滤掉执行时间少于该参数的 SQL,或者如果启用 log_queries_not_using_indexes 参数,记录留下全表或索引全扫描的 SQL(即两个条件取并集)

3)min_everined_row_limit 参数不为 0 的情况下,过滤掉 SQL 扫描行数少于min_everined_row_limit行的 SQL

三、注意

1)服务器不会记录查询缓存处理的查询。

2)默认情况下,从库不会将复制的慢查询写入慢日志。要更改此设置,请启用log_slow_slave_statements系统变量。请注意,如果使用基于行的复制(binlog_format=row),则log_slow_slave_statements无效。只有当查询以语句格式记录在二进制日志中时,即当设置binlog_format=STATION时,或者当设置binlog _format=MIXED且语句以语句格式进行记录时,才会将查询添加到从库的慢日志中。设置binlog_format=MIXED时以行格式记录的慢查询,或设置binlog-format=row时记录的慢日志,即使启用了log_Slow_slave_statements,也不会添加到从库的慢日志中。


相关文章

chengying-4.0登入接口逆向

chengying-4.0登入接口逆向

首先是登入的加密url:http://xxxxx/api/v2/user/login参数1. username:admin@dtstack.com2. password:614bb9438210c69...

helm chart包编写

helm chart包编写

相关文档https://helm.sh/zh/docs/charttemplateguide/getting_started/编写helm chart包创建chart包```Plain Text h...

Greenplum数据库建立外部表加载HDFS文件实践指导

Greenplum数据库建立外部表加载HDFS文件实践指导

环境概述(1)     Greenplum数据库版本号Greenplum Database 4.3.0.0POC3 build 45206(基于PostgreS...

Solr常用API详细操作

Solr常用API详细操作

1. 监督集群的状态和统计返回监督器(overseer)的当前状态,各种监督器API的性能统计信息以及每种操作类型的最近10次故障/admin/collections?action=OVERSEERS...

EM部署HBASE

EM部署HBASE

先获取HBASE包,放在em节点中,在HBASE包所在的服务器上执行,127.0.0.1指向的是em服务器的ip。# {package_name}表示为具体的tar包名称 curl http://1...

Python functools 模块

1、reduce 方法reduce 方法,顾名思义就是减少,map reduce 应用:大数据语法: reduce(function, sequence[, initial]) -> value...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。