配置参数的hint
功能描述
指明计划生成时配置参数的值,又称作guc hint。
注意事项
- 如果hint设置的配置参数在语句级别生效,则该hint必须写在顶层查询中,而不能写在子查询中。对于UNION、INTERSECT、EXCEPT和MINUS语句,可以将在语句级别的guc hint写在参与集合运算的任意一个SELECT子句上,该guc hint设置的配置参数会在参与集合运算的每个SELECT子句上生效。
 - 子查询提升时,该子查询上的所有guc hint会被丢弃。
 - 如果一个配置参数既被语句级别的guc hint设置,又被子查询级别的guc hint设置,则子查询级别的guc hint在对应的子查询中生效,语句级别的guc hint在语句的其它子查询中生效。
 
语法格式
set [global]([@block_name] guc_name guc_value)
参数说明
- global表示hint设置的配置参数在语句级别生效,不加global表示hint设置的配置参数在子查询级别生效,即仅在hint所在的子查询中生效,在该语句的其它子查询中不生效。
 - block_name表示语句块的block_name,详细说明请参考block_name。
 - guc_name表示hint指定的配置参数的名称。
 
- guc_value表示hint指定的配置参数的值。
 
guc hint当前仅支持部分配置参数,并且有些配置参数不支持在子查询级别设置,只能在语句级别设置,以下为支持的参数列表:
| 
        配置参数名  | 
      
        是否支持在子查询级别设置  | 
     
|---|---|
| 
        agg_max_mem  | 
      
        是  | 
     
| 
        agg_redistribute_enhancement  | 
      
        是  | 
     
| 
        best_agg_plan  | 
      
        是  | 
     
| 
        cost_model_version  | 
      
        否  | 
     
| 
        cost_param  | 
      
        否  | 
     
| 
        enable_array_optimization  | 
      
        否  | 
     
| 
        enable_bitmapscan  | 
      
        是  | 
     
| 
        enable_broadcast  | 
      
        是  | 
     
| 
        enable_csqual_pushdown  | 
      
        否  | 
     
| 
        enable_redistribute  | 
      
        是  | 
     
| 
        enable_extrapolation_stats  | 
      
        是  | 
     
| 
        enable_fast_query_shipping  | 
      
        否  | 
     
| 
        enable_force_vector_engine  | 
      
        否  | 
     
| 
        enable_hashagg  | 
      
        是  | 
     
| 
        enable_hashfilter  | 
      
        否  | 
     
| 
        enable_hashjoin  | 
      
        是  | 
     
| 
        enable_index_nestloop  | 
      
        是  | 
     
| 
        enable_indexonlyscan  | 
      
        是  | 
     
| 
        enable_indexscan  | 
      
        是  | 
     
| 
        enable_join_pseudoconst  | 
      
        是  | 
     
| 
        enable_mergejoin  | 
      
        是  | 
     
| 
        enable_mixedagg  | 
      
        否  | 
     
| 
        enable_nestloop  | 
      
        是  | 
     
| 
        enable_nodegroup_debug  | 
      
        否  | 
     
| 
        enable_partition_dynamic_pruning  | 
      
        是  | 
     
| 
        enable_seqscan  | 
      
        是  | 
     
| 
        enable_sonic_hashagg  | 
      
        否  | 
     
| 
        enable_sonic_hashjoin  | 
      
        是  | 
     
| 
        enable_sort  | 
      
        是  | 
     
| 
        enable_stream_ctescan  | 
      
        否  | 
     
| 
        enable_tidscan  | 
      
        是  | 
     
| 
        enable_value_redistribute  | 
      
        是  | 
     
| 
        enable_vector_engine  | 
      
        否  | 
     
| 
        expected_computing_nodegroup  | 
      
        否  | 
     
| 
        force_bitmapand  | 
      
        是  | 
     
| 
        from_collapse_limit  | 
      
        是  | 
     
| 
        join_collapse_limit  | 
      
        是  | 
     
| 
        join_num_distinct  | 
      
        是  | 
     
| 
        outer_join_max_rows_multipler  | 
      
        是  | 
     
| 
        prefer_hashjoin_path  | 
      
        否  | 
     
| 
        qrw_inlist2join_optmode  | 
      
        是  | 
     
| 
        qual_num_distinct  | 
      
        是  | 
     
| 
        query_dop  | 
      
        否  | 
     
| 
        query_max_mem  | 
      
        否  | 
     
| 
        query_mem  | 
      
        否  | 
     
| 
        rewrite_rule  | 
      
        否  | 
     
| 
        setop_optmode  | 
      
        是  | 
     
| 
        skew_option  | 
      
        是  | 
     
| 
        stream_ctescan_max_estimate_mem  | 
      
        否  | 
     
| 
        stream_ctescan_pred_threshold  | 
      
        否  | 
     
| 
        stream_ctescan_refcount_threshold  | 
      
        否  | 
     
| 
        windowagg_pushdown_enhancement  | 
      
        否  | 
     
| 
        index_selectivity_cost  | 
      
        是  | 
     
| 
        index_cost_limit  | 
      
        是  | 
     
示例
对示例中原语句使用如下hint:
explain select /*+ set global(query_dop 0) */ i_product_name product_name ...
该hint表示:在整个语句的计划生成过程中,将配置参数query_dop设置为0,即打开SMP自适应功能。生成的计划如下图所示:
