openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警

文章目录

    • openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警

openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警

Plan Hint的结果会体现在计划的变化上,可以通过explain来查看变化。

Hint中的错误不会影响语句的执行,只是不能生效,该错误会根据语句类型以不同方式提示用户。对于explain语句,hint的错误会以warning形式显示在界面上,对于非explain语句,会以debug1级别日志显示在日志中,关键字为PLANHINT。

hint的错误分为以下类型:

  • 语法错误

    语法规则树归约失败,会报错,指出出错的位置。

    例如:hint关键字错误,leading hint或join hint指定2个表以下,其它hint未指定表等。一旦发现语法错误,则立即终止hint的解析,所以此时只有错误前面的解析完的hint有效。

    例如:

    leading((t1 t2)) nestloop(t1) rows(t1 t2 #10)
    

    nestloop(t1)存在语法错误,则终止解析,可用hint只有之前解析的leading((t1 t2))。

  • 语义错误

    • 表不存在,存在多个,或在leading或join中出现多次,均会报语义错误。
    • scanhint中的index不存在,会报语义错误。
    • 另外,如果子查询提升后,同一层出现多个名称相同的表,且其中某个表需要被hint,hint会存在歧义,无法使用,需要为相同表增加别名规避。
  • hint重复或冲突

    如果存在hint重复或冲突,只有第一个hint生效,其它hint均会失效,会给出提示。

    • hint重复是指,hint的方法及表名均相同。例如:nestloop(t1 t2) nestloop(t1 t2)。

    • hint冲突是指,table list一样的hint,存在不一样的hint,hint的冲突仅对于每一类hint方法检测冲突。

      例如:nestloop (t1 t2) hashjoin (t1 t2),则后面与前面冲突,此时hashjoin的hint失效。注意:nestloop(t1 t2)和no mergejoin(t1 t2)不冲突。

      img 须知:
      leading hint中的多个表会进行拆解。例如:leading ((t1 t2 t3))会拆解成:leading((t1 t2)) leading(((t1 t2) t3)),此时如果存在leading((t2 t1)),则两者冲突,后面的会被丢弃。(例外:指定内外表的hint若与不指定内外表的hint重复,则始终丢弃不指定内外表的hint。)

  • 子链接提升后hint失效

    子链接提升后的hint失效,会给出提示。通常出现在子链接中存在多个表连接的场景。提升后,子链接中的多个表不再作为一个整体出现在join中。

  • 列类型不支持重分布

    • 对于skew hint来说,目的是为了进行重分布时的调优,所以当hint列的类型不支持重分布时,hint将无效。
  • hint未被使用

    • 非等值join使用hashjoin hint或mergejoin hint。
    • 不包含索引的表使用indexscan hint或indexonlyscan hint。
    • 通常只有在索引列上使用过滤条件才会生成相应的索引路径,全表扫描将不会使用索引,因此使用indexscan hint或indexonlyscan hint将不会使用。
    • indexonlyscan只有输出列仅包含索引列才会使用,否则指定时hint不会被使用。
    • 多个表存在等值连接时,仅尝试有等值连接条件的表的连接,此时没有关联条件的表之间的路径将不会生成,所以指定相应的leading、join、rows hint将不使用,例如:t1 t2 t3表join,t1和t2,t2和t3有等值连接条件,则t1和t3不会优先连接,leading(t1 t3)不会被使用。
    • 生成stream计划时,如果表的分布列与join列相同,则不会生成redistribute的计划;如果不同,且另一表分布列与join列相同,只能生成redistribute的计划,不会生成broadcast的计划,指定相应的hint则不会被使用。
    • 如果子链接未被提升,则blockname hint不会被使用。
    • 对于skew hint,hint未被使用可能由于:
      • 计划中不需要进行重分布。
      • hint指定的列为包含分布键。
      • hint指定倾斜信息有误或不完整,如对于join优化未指定值。
      • 倾斜优化的GUC参数处于关闭状态。

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/529240.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

transformer上手(1) —— transformer介绍

1 起源与发展 2017 年 Google 在《Attention Is All You Need》中提出了 Transformer 结构用于序列标注,在翻译任务上超过了之前最优秀的循环神经网络模型;与此同时,Fast AI 在《Universal Language Model Fine-tuning for Text Classificat…

MQ的延迟队列

1,场景 1.定时发布文章 2.秒杀之后,给30分钟时间进行支付,如果30分钟后,没有支付,订单取消。 3.预约餐厅,提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间: 7*30 * 60 * …

【STL】顺序容器与容器适配器

文章目录 1顺序容器概述1.1array1.2forward_list1.3deque 2.如何确定使用哪种顺序容器呢?3.容器适配器的概念4.如何定义适配器呢? 1顺序容器概述 给出以下顺序容器表: 顺序容器类型作用vector可变大小的数组,支持快速访问&#…

Dev-C++详细安装教程及中文设置(附带安装包链接)

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍*************安装包链接在文章末尾***************** Dev-C详细安装教程…

指针 运算偏移

思维导图: 题目: 1.变量的指针,其含义是指该变量的 B 。 A)值 B)地址 C)名 D)一个标志 2.已有定义int k2;int *ptr1,*ptr2;且ptr1和ptr2均…

【实用工具】使用飞书机器人监控工程日志

1.创建一个飞书群聊,设置-->群机器人-->添加机器人-->自定义机器人-->修改机器人名称-->添加 2.复制webhook地址 3.编写日志请求代码 import logging import requests import json import os from datetime import datetime import time import sub…

机器-学习

获取数据数据处理特征工程机器学习模型调优 一:机器学习的定义 二:工作流程 三:工作流程解释 pandas numpy matplotlib 四:机器学习算法分类 4.1 监督学习 4.1.2 回归问题 目标值是连续的 4.1.2 分类问题 目标值是离散的 4.2…

软件测试面试真的很水的,不用焦虑

文档获取方式: 这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点击下方小卡片免费获取。

网工内推 | 深信服、宁德时代,最高20K招安全工程师,包吃包住

01 深信服科技 招聘岗位:安全服务工程师 职责描述: 1.负责现场安全服务项目工作内容,包含渗透测试、安全扫描、基线核查、应急响应等; 2.协助用户完成安全测试漏洞整改、复测工作; 3.为用户提供网络、主机、业务系统等…

Redis高级-分布式缓存

分布式缓存 – 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 0.目标 1.Redis持久化 Redis有两种持久化方案: RDB持久化AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件)…

Mogdb双网卡同步最佳实践

大家都知道Oracle数据库无论是单机还是RAC集群在进行生产部署实施时,我们都会对网卡做冗余考虑,比如使用双网卡,比如public、心跳网络。这样的目的主要是为了安全,避免淡点故障。当然也网卡Bond不仅是可以做主备还可以支持负载均衡…

蓝桥杯第十一届c++大学B组详解

目录 1.字符串排序 2.门牌制作 3.即约分数 4.蛇型填数 5.跑步锻炼 6.七段码 7.成绩统计 8.回文日期 9.字串分值和 10.平面切分 1.字符串排序 题目解析:这个题目真没搞懂。有会的大佬教我一下谢谢。 2.门牌制作 题目解析:出过超级多这类题目&am…

坚持十天做完Python入门100题第一天

坚持十天做完Python入门100题第一天 第1题 变量更新第2题 变量命名规则第3题 类型错误第4题 序列索引第5题 序列切片第6题 负数切片第7题 Range函数 第1题 变量更新 解析:Python代码的读取和执行是由上至下的,变量n一开始被赋值为1,但被更新了…

ssm034学生请假系统+jsp

学生请假系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生请假系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处…

c++中的命名空间

对于C语言中我们有时候很难将标准库中的关键字当作变量的名称,这就是C语言中会存在的命名冲突的问题。 但是在c中我们可以自行开辟一块命名空间出来,我们可以将我们所需要的变量的名称放在一块区域中,当我们需要使用的时候我们就通过那块命名…

ssm035基于JavaWeb的家居商城系统的设计与实现+jsp

家居商城系统 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于家居商城系统当然也不能排除在外,随着网络技术的不断成熟,带动了家居商城系统,它彻底改…

c语言 :柔性数组与c/c++内存领域的划分

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一 柔性数组(1)什么是柔性数组1)柔性数组的声明2)柔性数组的特性 (2)柔性数组的使用 二 c/c内…

代码随想录算法训练营三刷 day49 | 动态规划 之121 买卖股票的最佳时机 122 买卖股票的最佳时机II

三刷day49 121. 买卖股票的最佳时机1.确定dp数组(dp table)以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组 122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 题目链接 解题思路: 动规五部曲分析如下&…

AI技术将影响更长远,比如未来的就业形势

随着人工智能渗透到工作场所,人类将需要掌握新的工作技能。 AI作为新技术已经开始扰乱就业市场了。对于最新的AI人工智能技术,经济学家、教育工作者、监管机构、商业分析师以及相关领域专家预测,在不久的将来,人工智能一代将需要…

MySQL的基础操作(二)

目录 一.数据库约束 1.主键约束 (Primary Key) 2.唯一约束 (Unique) 3.外键约束 (Foreign Key): 4.检查约束(Check) 5.默认约束 (Default) 二.聚合查询 1.简单聚合函数 2.GROUP BY子句 3.HAVING子句 三.联合查询 1.内连接 2.左连接 3.右连接 4.子查询 5.合并查询…