log_queries_not_using_indexes参数设置

梦莱2年前技术文章3609

【现象】

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


 

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


相关文章

Flink部署

安装前准备1.1. 添加环境变量vi /etc/profile export FLINK_HOME=/opt/flinkexport PATH=$PATH:$FLINK_HOME/bin source...

prometheus  web页面卡顿无法使用问题

prometheus web页面卡顿无法使用问题

详细描述:卡顿位置主要位于输入页面输入PromQL的地方,只要碰到那个框,页面就会卡死【分析过程】查看浏览器cpu发现,只要动了那个框内的内容,cpu就会打满;   如果提前编辑好查询的sql内容...

数据湖技术之iceberg(七)Spark管理iceberg表

数据湖技术之iceberg(七)Spark管理iceberg表

1.SparkSQL设置catalog配置以下操作主要是SparkSQL操作Iceberg,同样Spark中支持两种Catalog的设置:hive和hadoop,Hive Catalog就是icebe...

CDP实操--配置Ranger对hive行过滤(七)

CDP实操--配置Ranger对hive行过滤(七)

1.使用sam_sec查询person表2.用sam_sec认证.3.查询person表:4. 配置行过滤策略。5. 新增策略:6. 过滤anna:7. 查询测试。...

linux开启Firewall白名单限制ip访问

linux开启Firewall白名单限制ip访问

1、Firewalld是否启动成功systemctl start firewalld && systemctl enable firewalld 1 2、开启规则需求:客户由...

chengying-6.0登入接口逆向

chengying-6.0登入接口逆向

版本更新首先是登入的加密url:http://172.16.121.70/login参数1. username:admin@dtstack.com2. password:614bb9438210c69...

发表评论    

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