log_queries_not_using_indexes参数设置

梦莱2年前技术文章3576

【现象】

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


 

如上慢日志里出现较多 '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,也不会添加到从库的慢日志中。


相关文章

Alluxio 部署

Alluxio 部署

1、基础环境准备配置java环境变量tar -xzvf jdk-8u281-linux-x64.tar.gz -C /opt ln -s ...

Yarn调度器对比

1)Hadoop调度器重要分为三类:FIFO 、Capacity Scheduler(容量调度器)和Fair Sceduler(公平调度器)。Apache默认的资源调度器是容量调度器;CDH...

Go 配置文件管理(ini)

Go 配置文件管理(ini)

1、背景ini 文件是 Initialization File 的缩写,即初始化文件,可用于统一管理各项配置。gopkg.in/ini.v1 是地表最强大、最方便和最流行的 Go 语言 INI 文件操...

Helm 控制语句

Helm 控制结构(在模板语言中称为 "actions")提供给你和模板作者控制模板迭代流的能力。 Helm 的模板语言提供了以下控制结构:if/else,用来创建条件语句with,用来指定范围ran...

idea打包java可执行jar包

idea打包java可执行jar包

1,在项目上鼠标右键 --> Open Module SettingsArtifacts --> + --> JAR --> From modules with depende...

使用clickhouse-copier迁移数据

说明clickhouse-copier是clickhouse官方提供的一个数据迁移工具。支持将clickhouse表从一个集群迁移到另外一个集群。使用clickhouse-copier有一些限制条件:...

发表评论    

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