更新时间:2024-01-05 GMT+08:00
分享

配置参数的hint

功能描述

指明计划生成时配置参数的值,又称作guc hint。

语法格式

set [global](guc_name guc_value)

参数说明

  • global表示hint设置的配置参数在语句级别生效,不加global表示hint设置的配置参数在子查询级别生效,即仅在hint所在的子查询中生效,在该语句的其它子查询中不生效。
  • guc_name表示hint指定的配置参数的名称。
  • guc_value表示hint指定的配置参数的值。
  • 如果hint设置的配置参数在语句级别生效,则该hint必须写在顶层查询中,而不能写在子查询中。对于UNION、INTERSECT、EXCEPT和MINUS语句,可以将在语句级别的guc hint写在参与集合运算的任意一个SELECT子句上,该guc hint设置的配置参数会在参与集合运算的每个SELECT子句上生效。
  • 子查询提升时,该子查询上的所有guc hint会被丢弃。
  • 如果一个配置参数既被语句级别的guc hint设置,又被子查询级别的guc hint设置,则子查询级别的guc hint在对应的子查询中生效,语句级别的guc hint在语句的其它子查询中生效。

guc hint当前仅支持部分配置参数,并且有些配置参数不支持在子查询级别设置,只能在语句级别设置,以下为支持的参数列表:

表1 guc hint支持的配置参数

配置参数名

参数描述

是否支持在子查询级别设置

agg_max_mem

设置执行作业中的Agg算子的聚集列超过5列时,该Agg算子所能够使用的最大内存。

agg_redistribute_enhancement

当进行Agg操作时,如果包含多个group by列且均不为分布列,进行重分布时会选择某一group by列进行重分布。本参数控制选择重分布列的策略。

best_agg_plan

本参数用于控制优化器生成哪种hashagg的计划。

cost_model_version

控制应用场景中估算时cost使用的模型。

cost_param

该参数用于控制在特定的客户场景中,使用不同的估算方法使得估算值与真实值更接近。

enable_bitmapscan

控制优化器对位图扫描规划类型的使用。

enable_broadcast

控制优化器对stream代价估算时对broadcast分布方式的使用。

enable_extrapolation_stats

标识是否允许基于历史统计信息使用推理估算的逻辑。

enable_fast_query_shipping

控制查询优化器是否使用分布式框架。

enable_force_vector_engine

对于支持向量化的执行器算子,如果其子节点是非向量化的算子,通过设置此参数为on,强制生成向量化的执行计划。

enable_hashagg

控制优化器对Hash聚集规划类型的使用。

enable_hashjoin

控制优化器对Hash连接规划类型的使用。

enable_index_nestloop

控制优化器对内表参数化索引扫描嵌套循环连接规划类型的使用。

enable_indexscan

控制优化器对索引扫描规划类型的使用。

enable_join_pseudoconst

设置是否允许与伪常数进行join。

enable_nestloop

控制优化器对内表全表扫描嵌套循环连接规划类型的使用。

enable_nodegroup_debug

控制优化器在多Node Group环境下,是否使用强制弹性计算。

enable_partition_dynamic_pruning

分区表扫描是否支持动态剪枝。

enable_sort

控制优化器使用的排序步骤。

enable_stream_ctescan

控制stream计划是否支持ctescan。

enable_value_redistribute

控制是否开启生成value redistribute优化计划。

enable_vector_engine

控制优化器对向量化执行引擎的使用。

expected_computing_nodegroup

标识选定的计算Node Group模式或目标计算Node Group。

force_bitmapand

是否强制规划器使用位图计划。

from_collapse_limit

根据生成的FROM列表的项数来判断优化器是否将把子查询合并到上层查询,如果FROM列表项个数小于等于该参数值,优化器会将子查询合并到上层查询。

join_collapse_limit

根据得出的列表项数来判断优化器是否执行把除FULL JOINS之外的JOIN构造重写到FROM列表中。

join_num_distinct

控制应用场景中Join列或表达式的默认distinct值。

outer_join_max_rows_multipler

控制应用场景中外连接估算行数的最大值。

qrw_inlist2join_optmode

控制是否使用inlist-to-join查询重写。

qual_num_distinct

控制应用场景中过滤列或表达式的默认distinct值。

query_dop

用户自定义的查询并行度。

query_max_mem

设置执行作业所能够使用的最大内存。

query_mem

设置执行作业所使用的内存。

rewrite_rule

标识开启的可选查询重写规则。

setop_optmode

控制不带ALL选项的集合操作(UNION/EXCEPT/INTERSECT)语句的各个查询分支语句是否执行去重操作。

skew_option

控制是否使用优化策略。

示例

示例中原语句使用如下hint:

explain
select /*+ set global(query_dop 0) */ i_product_name product_name
...

该hint表示:在整个语句的计划生成过程中,将配置参数query_dop设置为0,即打开SMP自适应功能。生成的计划如下图所示:

分享:

    相关文档

    相关产品