优化器方法配置
这些配置参数提供了影响查询优化器选择查询规划的原始方法。如果优化器为特定的查询选择的缺省规划并不是最优的,可以通过使用这些配置参数强制优化器选择一个不同的规划来临时解决这个问题。更好的方法包括调节优化器开销常量、手动运行ANALYZE、增加配置参数default_statistics_target的值或使用ALTER TABLE SET STATISTICS为指定列增加收集的统计信息。
enable_bitmapscan
参数说明:控制优化器对位图扫描规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
force_bitmapand
参数说明:控制优化器强制使用bitmapand规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:off
enable_hashagg
参数说明:控制优化器对Hash聚集规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_hashjoin
参数说明:控制优化器对Hash连接规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_indexscan
参数说明:控制优化器对索引扫描规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_indexonlyscan
参数说明:控制优化器对仅索引扫描规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_material
参数说明:控制优化器对实体化的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_mergejoin
参数说明:控制优化器对融合连接规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:off
enable_nestloop
参数说明:控制优化器对内表全表扫描嵌套循环连接规划类型的使用。关闭这个变量就会让优化器在存在其他方法的时候优先选择其他方法。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:off
enable_index_nestloop
参数说明:控制优化器对内表参数化索引扫描嵌套循环连接规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_seqscan
参数说明:控制优化器对顺序扫描规划类型的使用。关闭这个变量会让优化器在存在其他方法的时候优先选择其他方法。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_sort
参数说明:控制优化器使用的排序步骤。关闭这个变量可以让优化器在存在其他方法的时候优先选择其他方法。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_tidscan
参数说明:控制优化器对TID扫描规划类型的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_kill_query
参数说明:CASCADE模式删除用户时,会删除此用户拥有的所有对象。此参数标识是否允许在删除用户的时候,取消锁定此用户所属对象的query。
该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示允许取消锁定。
- off表示不允许取消锁定。
默认值:off
enable_stream_concurrent_update
参数说明:控制优化器在并发更新场景下对stream的使用,该参数受限于enable_stream_operator参数。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示允许优化器对update语句生成stream计划。
- off表示优化器对update语句仅能生成非stream计划。
默认值:on
enable_stream_operator
参数说明:控制优化器对stream的使用。当enable_stream_operator参数关闭时,会有大量关于计划不能下推的日志记录到日志文件中。如果用户不需要这些日志内容,建议用户在enable_stream_operator参数关闭时,也同时关闭enable_unshipping_log参数。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
- 独立部署:off
- 金融版(标准型):on
- 企业版:on
- 金融版(数据计算型):on
enable_stream_recursive
参数说明:控制是否将with-recursive关联查询下推DN分布式执行。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示支持使用with-recursive关联查询下推DN分布式执行。
- off表示不支持使用with_recursive下推。
默认值:on
max_recursive_times
参数说明:控制with recursive的最大迭代次数。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,0~2147483647。
默认值:200
enable_broadcast
参数说明:控制优化器对stream代价估算时对broadcast分布方式的使用。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:on
enable_change_hjcost
参数说明:控制优化器在Hash Join代价估算路径选择时,是否使用将内表运行时代价排除在Hash Join节点运行时代价外的估算方式。如果使用,则有利于选择条数少,但运行代价大的表做内表。
该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示使用。
- off表示不使用。
默认值:off
best_agg_plan
- hashagg+gather(redistribute)+hashagg。
- redistribute+hashagg(+gather)。
- hashagg+redistribute+hashagg(+gather)。
本参数用于控制优化器生成哪种hashagg的计划。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:0,1,2,3
- 取值为1时,强制生成第一种计划。
- 取值为2时,如果group by列可以重分布,强制生成第二种计划,否则生成第一种计划。
- 取值为3时,如果group by列可以重分布,强制生成第三种计划,否则生成第一种计划。
- 取值为0时,优化器会根据以上三种计划的估算cost选择最优的一种计划生成。
默认值:0
agg_redistribute_enhancement
参数说明:当进行Agg操作时,如果包含多个group by列且均不为分布列,进行重分布时会选择某一group by列进行重分布。本参数控制选择重分布列的策略。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示会选择估算distinct值最多的一个可重分布列作为重分布列。
- off表示会选择第一个可重分布列为重分布列。
默认值:off
enable_absolute_tablespace
参数说明:控制表空间是否可以使用绝对路径。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示可以使用绝对路径。
- off表示不可以使用绝对路径。
默认值:on
enable_valuepartition_pruning
参数说明:是否对DFS分区表进行静态/动态优化。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示对DFS分区表进行静态/动态优化。
- off表示不对DFS分区表进行静态/动态优化。
默认值:on
expected_computing_nodegroup
参数说明:标识选定的计算Node Group模式或目标计算Node Group。Node Group目前为内部用机制,用户无需设置。
共4种计算Node Group模式,用于关联操作和聚集操作时选定计算Node Group。在每一种模式中,优化器有针对性地选定几个候选计算Node Group,然后根据代价,从中为当前算子挑选最佳计算Node Group。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:字符串
- optimal:候选计算Node Group列表包含算子操作对象所在的Node Group和由当前用户具有COMPUTE权限的所有Node Group包含的所有DN构成的Node Group
- query:候选计算Node Group列表包含算子操作对象所在的Node Group和由当前查询涉及的所有基表所在Node Group包含的所有DN构成的Node Group
- Node Group名(enable_nodegroup_debug被设置为off):候选计算Node Group列表包含算子操作对象所在的Node Group和该指定的Node Group
- Node Group名(enable_nodegroup_debug被设置为on):候选计算Node Group为指定的Node Group
默认值:query
enable_nodegroup_debug
参数说明:控制优化器在多Node Group环境下,是否使用强制弹性计算。Node Group目前为内部用机制,用户无需设置。
该参数只在expected_computing_nodegroup被设置为具体Node Group时生效。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示强制将计算弹性到expected_computing_nodegroup所指定的Node Group进行计算。
- off表示不强制使用某个Node Group进行计算。
默认值:off
stream_multiple
参数说明:设置优化器计算Stream算子的开销时的加权。
在原代价模型的基础上,最终Stream代价将被乘以此加权参数。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
此参数仅对Redistribute和Broadcast类型的Stream有效。
取值范围:浮点型,0~DBL_MAX。
默认值:1
qrw_inlist2join_optmode
参数说明:控制是否使用inlist-to-join查询重写。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:字符串
- disable:关闭inlist2join查询重写。
- cost_base:基于代价的inlist2join查询重写。
- rule_base:基于规则的inlist2join查询重写,即强制使用inlist2join查询重写。
- 任意正整数:inlist2join查询重写阈值,即in子句内的list内元素个数大于该阈值,进行inlist2join查询重写。
默认值:cost_base
skew_option
参数说明:控制是否使用优化策略。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:枚举类型
- off:关闭策略。
- normal:采用激进策略。对于不确定是否出现倾斜的场景,认为存在倾斜,并进行相应优化。
- lazy:采用保守策略。对于不确定是否出现倾斜场景,认为不存在倾斜,不进行优化。
默认值:normal
cost_weight_index
参数说明:设置index_scan的代价权重。
- 设置为1表示不调整;
- 设置小于1时,index_scan的代价会降低,更容易被优化器选中;
- 设置大于1时,index_scan的代价会增加。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:浮点型,1e-10~1e+10。
默认值:1
default_limit_rows
参数说明:设置生成genericplan的缺省limit估算行数。此参数设置为正数时意为直接将设置的值作为估算limit的行数;为正数小数时,自动取整;为负数时代表使用百分比的形式设置默认的估算值,负数转换为默认百分比,即-5代表5%。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:浮点型,-100~DBL_MAX。
默认值:-10
enforce_a_behavior
参数说明:控制正则表达式的规则匹配模式。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示正则表达式采用A格式的匹配规则。
- off表示正则表达式采用POSIX格式的匹配规则。
默认值:on
check_implicit_conversions
参数说明:控制检查查询中有隐式类型转换的索引列是否会生成候选索引路径。关于该参数的使用场景请参见《开发指南》中“SQL调优指南 > 检查隐式转换的性能问题”章节。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示检查查询中有隐式类型转换的索引列是否会生成候选索引路径。
- off表示不进行相关检查。
默认值:off
将该参数设置为on时,需要同时将参数enable_fast_query_shipping设置为off,检查索引列的隐式数据类型转换的识别机制才会生效。