优化器方法配置
这些配置参数提供了影响查询优化器选择查询规划的原始方法。如果优化器为特定的查询选择的缺省规划并不是最优的,可以通过使用这些配置参数强制优化器选择一个不同的规划来临时解决这个问题。更好地方法包括调节优化器开销常量、手动运行ANALYZE、增加配置参数default_statistics_target的值、增加使用ALTER TABLE SET STATISTICS为指定列增加收集的统计信息。
enable_bitmapscan
参数说明:控制优化器对位图扫描规划类型的使用。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭之后会全局禁止bitmap scan算子,可能导致部分场景性能下降。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
force_bitmapand
参数说明:控制优化器对bitmap and规划类型的强制使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:打开该参数后当满足bitmap and索引扫描算子使用条件时,优化器生成计划会强制走bitmap and索引扫描,部分场景下可能影响查询性能。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
enable_hashagg
参数说明:控制优化器对Hash聚集规划类型的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭后会导致部分场景下Hash聚集算子无法使用,影响查询改写逻辑,使查询性能下降。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
enable_hashjoin
参数说明:控制优化器对Hash连接规划类型的使用。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭后会全局禁止使用Hash Join算子,优先生成其他Join类型计划,可能导致部分场景性能下降。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
enable_indexscan
参数说明:控制优化器对索引扫描规划类型的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭后会全局禁止使用索引扫描算子,可能导致部分场景性能下降。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
enable_indexonlyscan
参数说明:控制优化器对仅索引扫描规划类型的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭后会全局禁止使用仅索引扫描算子,一些仅需要走索引扫描不需要回表的计划将无法生成,可能导致部分场景性能下降。若要更改,请谨慎操作,避免因误操作产生意料之外的风险。
enable_material
参数说明:控制优化器对实体化的使用。消除整个实体化是不可能的,但是可以关闭这个参数以防止优化器插入实体节点。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭后会禁止优化器插入实体节点,部分场景下无法生成Material算子,可能导致部分场景性能下降。
enable_mergejoin
参数说明:控制优化器对融合连接规划类型的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:打开该参数优化器会对满足条件的Join连接生成融合连接路径,可能导致该场景下选择的连接算子非实际最优。
enable_nestloop
参数说明:控制优化器对内表全表扫描嵌套循环连接规划类型的使用。完全消除嵌套循环连接是不可能的,但是,若关闭这个参数,当存在其他方法时,优化器会优先选择其他方法。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:off
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置不当的风险与影响:打开该参数优化器会对满足条件的Join连接生成NestloopJoin路径,可能导致该场景下选择的连接算子非实际最优。
enable_index_nestloop
参数说明:控制优化器对内表参数化索引扫描嵌套循环连接规划类型的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭该参数会导致部分场景下无法生成参数化路径,通常参数化路径可以提升查询性能,因此一般建议开启。
enable_seqscan
参数说明:控制优化器对顺序扫描规划类型的使用。完全消除顺序扫描是不可能的,但是,若关闭这个参数,当存在其他方法时,优化器会优先选择其他方法。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭该参数会导致优化器倾向于选择其他扫描方法,降低顺序扫描方法的优先级,部分场景下可能会影响查询性能。
enable_sort
参数说明:控制优化器使用的排序步骤。完全消除明确的排序是不可能的,但是,若关闭这个参数,当存在其他方法时,优化器会优先选择其他方法。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭该参数会导致优化器倾向于选择其他方法,降低排序方法使用的优先级,产生不良影响较小,通常建议打开。
enable_tidscan
参数说明:控制优化器对TID扫描规划类型的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭该参数会导致优化器倾向于选择其他方法,降低TID扫描方法使用的优先级,产生不良影响较小,通常建议打开。
enable_kill_query
参数说明:CASCADE模式删除用户时,会删除此用户拥有的所有对象。此参数标识在删除用户的时候,是否允许取消锁定此用户所属对象的query。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示允许取消锁定。
- off:表示不允许取消锁定。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:打开后,用户被删除时,该用户对应query可能会暴露,对系统的一致性和安全性带来不利影响。
max_recursive_times
参数说明:控制with recursive的最大迭代次数。该参数可在PDB级别设置。
参数类型:整型
参数单位:无
取值范围:0 ~ 2147483647
默认值:200。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐根据实际业务评估合理值。
设置不当的风险与影响:对于with recursive语句,此参数用于避免陷入死循环,层次查询可用nocycle跳出循环。若要更改,请在理解参数含义后谨慎操作,避免因误操作产生意料之外的风险。
enforce_a_behavior
参数说明:控制正则表达式的规则匹配模式。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示正则表达式采用A格式的匹配规则。
- off:表示正则表达式采用POSIX格式的匹配规则。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:根据业务场景诉求设置。
设置不当的风险与影响:查询语句中正则表达式无法按预期匹配。
enable_vector_engine
参数说明:控制优化器对向量化执行引擎的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭可能会导致优化器未能针对特定场景生成向量化的查询计划,从而影响查询性能。
enable_broadcast
参数说明:控制优化器在stream代价估算时对broadcast分布方式的使用。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置不当可能会影响stream计划生成的准确性,从而影响查询性能。
该参数在集中式版本不生效。
enable_change_hjcost
参数说明:控制优化器在Hash Join代价估算路径选择时,是否使用将内表运行时代价排除在Hash Join节点运行时代价外的估算方式。如果使用,则有利于选择条数少,但运行代价大的表做内表。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示使用。
- off:表示不使用。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置不当可能会导致Hash Join代价估算有误,从而影响带有Hash Join计划生成的准确性。
enable_absolute_tablespace
参数说明:控制表空间是否可以使用绝对路径。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示可以使用绝对路径。
- off:表示不可以使用绝对路径。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭该参数创建表空间时将不允许使用绝对路径,建议根据业务实际需要设置,无其他风险。
enable_valuepartition_pruning
参数说明:是否对DFS分区表进行静态/动态优化。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示对DFS分区表进行静态/动态优化。
- off:表示不对DFS分区表进行静态/动态优化。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭后DFS分区表相关查询性能可能下降。
enable_default_index_deduplication
参数说明:设置btree索引默认情况下是否对键值重复的元组进行去重压缩。去重压缩功能对主键索引和唯一索引不生效。在重复键值的索引较多时,去重压缩功能可以有效降低索引占用空间。若创建索引时带有with (deduplication=on/off)语法时,优先根据deduplication参数决定该索引是否使用去重压缩功能。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示btree索引默认开启索引去重压缩功能。
- off:表示btree索引默认关闭索引去重压缩功能。
默认值:off
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值,对于非唯一索引、索引键值重复度较高,且索引占用空间较大的情况可以打开。
设置不当的风险与影响:非唯一索引且索引键值重复度很低或者唯一的场景,去重压缩功能会使索引插入性能小幅度劣化。
enable_expr_fusion
参数说明:控制SRF、表达式展平、共享聚合函数的转移状态和Step步数优化特性的开关。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示同时启用SRF、表达式展平、共享聚合函数的转移状态和Step步数优化特性。
- off:表示关闭本功能。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:打开会增加优化器运行开销。
SRF只支持query_dop=1的场景。
qrw_inlist2join_optmode
参数说明:控制是否使用inlist-to-join查询重写。该参数可在PDB级别设置。
参数类型:字符串
参数单位:无
取值范围:
- disable:关闭inlist-to-join查询重写。
- cost_base:基于代价的inlist-to-join查询重写,即基于代价自动评估是否使用inlist-to-join查询重写。
- rule_base:基于规则的inlist-to-join查询重写,即强制使用inlist-to-join查询重写。
- 任意正整数(1 ~ 2147483647):inlist-to-join查询重写阈值,即list内元素个数大于该阈值,进行inlist-to-join查询重写。
默认值:cost_base。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值,除非有异常场景或者发现优化器选择的计划查询性能低,需要手动调优才使用其他值。
设置不当的风险与影响:该参数会影响优化器是否进行inlist-to-join查询重写,设置不当会导致未生成更优计划。
skew_option
参数说明:控制是否使用优化策略。该参数可在PDB级别设置。
参数类型:枚举类型
参数单位:无
取值范围:off、normal、lazy
- off:关闭策略。
- normal:采用激进策略。对于不确定是否出现倾斜的场景,认为存在倾斜,并进行相应优化。
- lazy:采用保守策略。对于不确定是否出现倾斜场景,认为不存在倾斜,不进行优化。
默认值:normal。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:会影响优化器是否针对倾斜进行优化,设置不当会影响计划生成性能或查询执行性能。
default_limit_rows
参数说明:设置生成genericplan的缺省limit估算行数。该参数可在PDB级别设置。
参数类型:浮点型
参数单位:无
取值范围:-100 ~ DBL_MAX
- 设置为非负数时,表示直接将设置的值作为估算limit的行数。
- 设置为负数时,表示使用百分比的形式设置默认的估算值,负数转换为默认百分比,即-5代表5%。
默认值:-10。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置不当可能影响带有limit算子genericplan查询的性能。
check_implicit_conversions
参数说明:控制对查询中有隐式类型转换的索引列是否会生成候选索引路径进行检查。该参数可在PDB级别设置,关于该参数的使用场景请参见《开发指南》中“SQL调优指南 > 检查隐式转换的性能问题”章节。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示对查询中有隐式类型转换的索引列会生成候选索引路径进行检查。
- off:表示不进行相关检查。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:不进行检查可能导致查询语句中正则表达式无法按预期匹配。
cost_weight_index
参数说明:设置index_scan的代价权重。该参数可在PDB级别设置。
参数类型:浮点型
参数单位:无
取值范围:1e-6 ~ 1e+10
默认值:1。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:会影响优化器是否选择index_scan,设置不当可能影响优化器选择非最优计划从而影响查询性能。
try_vector_engine_strategy
参数说明:设置行存表走向量化执行引擎的策略。通过设置该参数,可以使包含行存表的查询转换为向量化的执行计划执行计算,从而提升类AP场景的复杂查询的执行性能。该参数可在PDB级别设置。
参数类型:枚举类型
参数单位:无
取值范围:
- off:表示关闭本功能,即行存表不会转换为向量的执行计划执行。
- force:表示只要查询中不包含向量化引擎不支持的类型或者表达式,则查询的基表为行存表,强制将查询转换为向量化的执行计划执行计算。在这种情况下,针对不同的查询场景可能出现性能下降。
- optimal:表示在force的基础上,由优化器根据查询的复杂度进行选择是否将查询语句转换为向量化的执行计划,尽可能避免转换为向量化的执行计划后出现性能下降。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:会影响优化器是否选择向量化的执行计划,设置不当可能会影响部分场景下查询的性能。
enable_opfusion_reuse
参数说明:控制复用opfusion obj内存特性的开关。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示在满足条件情况下,复用opfusion obj内存。
- off:表示关闭本功能。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:关闭可能会导致计划重新生成,查询性能下降。
enable_iud_fusion
参数说明:控制IUD语句优化特性的开关。该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示对输入进行类型转换时做优化处理。
- off:表示关闭本功能。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值,IUD语句性能需优化时可考虑开启。
设置不当的风险与影响:打开可能会增加优化器的开销,无明显风险。
enable_cached_operator
参数说明:控制算子执行态缓存特性的开关。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示允许缓存执行算子。
- off:表示关闭本功能。
默认值:on
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:若关闭则无法对算子执行态进行缓存,从而影响查询性能。
enable_smp_partitionwise
参数说明:控制是否在SMP场景下,开启Partition-wise Join的能力。多租场景下,该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示在SMP场景下,开启Partition-wise Join的能力。
- off:表示在SMP场景下,不开启Partition-wise Join的能力。
默认值:on。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:可能影响SMP场景下数据查询操作的性能。
force_smp_partitionwise_scan
参数说明:在SMP场景下,打开Partition-wise Join开关enable_smp_partitionwise后,是否在全局范围内开启Partition-wise Scan的并行扫描方式。多租场景下,该参数可在PDB级别设置。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示在SMP场景下,开启Partition-wise Scan的并行扫描方式。
- off:表示在SMP场景下,不开启Partition-wise Scan的并行扫描方式。
默认值:off。在PDB场景内,若未设置该参数,则继承来自全局的设置。
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:可能影响SMP场景下读取分区表数据的性能。
enable_nestagg
参数说明:开启嵌套聚集功能,嵌套聚集为形如sum(min(col))的双重聚集语法。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启嵌套聚集功能。
- off:表示关闭嵌套聚集功能。
默认值:on
设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:影响嵌套聚集功能的使用。