VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

其它优化器选项

rewrite_rule

参数说明:标识开启的可选查询重写规则。有部分查询重写规则是可选的,开启它们并不能总是对查询效率有提升效果。在特定的客户场景中,通过此GUC参数对查询重写规则进行设置,使得查询效率最优。

此参数可以控制查询重写规则的组合,比如有多个重写规则:rule1、rule2、rule3、rule4。可以设置:

  • 启用查询重写规则rule1。

    set rewrite_rule=rule1;
    
  • 启用查询重写规则rule2和rule3。

    set rewrite_rule=rule2,rule3; 
    
  • 关闭所有可选查询重写规则。

    set rewrite_rule=none; 
    

该参数属于USERSET类型参数,请参考重设参数表1中对应设置方法进行设置。

取值范围:字符串

  • none:不使用任何可选查询重写规则。

  • lazyagg:使用Lazy Agg查询重写规则(消除子查询中的聚集运算)。

  • magicset : 使用Magic Set查询重写规则(从主查询中下推条件到子查询)。

  • partialpush:使用Partial Push查询重写规则。

  • uniquecheck:使用Unique Check查询重写规则(提升目标列中无agg的子查询语句,在执行时检查返回行数是否为1行)。

  • disablerep:使用Disable Replicate查询重写规则。

  • intargetlist:使用In Target List查询重写规则(提升目标列中的子查询)。

  • predpushnormal:使用Predicate Push查询重写规则(下推谓词条件到子查询中)。

  • predpushforce:使用Predicate Push查询重写规则(下推谓词条件到子查询中,尽可能的利用索引加速)。

  • predpush:在predpushnormal和predpushforce中根据代价选择最优计划。

  • rownumenhance:可以将rownum < constrownum <= const 的场景转为limit常量算子。

  • enable_any_sublink_pullup_enhanced:计划器尝试将相关子连接进行提升,生成更好的执行计划。详细用法可参见ANY子连接性能优化

  • disable_pullup_expr_sublink:禁止优化器将expr_sublink类型的子连接提升,关于sublink的分类和提升原理详见子查询调优

  • enable_sublink_pullup_enhanced:使用增强后的sublink查询重写规则,包括where、 having子句的非相关子链接提升和winmagic重写优化。

enable_opfusion_reuse

参数说明: 用于控制opfusion对象是否复用,仅在enable_opfusion = on的前提下有效。开启此参数后:在表相同,resultdesc相同的情况下,将复用上一个opfusion对象。

该参数属于USERSET类型,请参考重设参数表1对应设置方法进行设置。

取值范围: 布尔型

  • on:开启opfusion对象复用功能。

  • off:关闭opfusion对象复用功能。

默认值: off

设置建议: 开启此参数后,在单表事务内批量提交的insert场景下,性能可提升10~15%。如果在此种场景下对性能有一定要求,建议打开此参数。

enable_partition_joinclauses_pushdown

参数说明: 用于分区表的嵌套连接场景。如果扫描节点为顺序扫描,且存在分区键相关的连接条件,控制是否将连接条件进行下推。

该参数属于USERSET类型,请参考重设参数表1对应设置方法进行设置。

取值范围: 布尔型

  • on:开启分区键连接条件下推功能。

  • off:关闭分区键连接条件下推功能。

默认值: off

skewed_param_factor

参数说明: 指定选用自适应custom计划(plan_cache_mode = 'adaptive_custom_plan' 时)时的偏斜因子。行数最多的值与最少的值之间相差超过这个阈值,认为数据存在偏斜。

该参数属于USERSET类型,请参考重设参数表1对应设置方法进行设置。

取值范围: 2~2147483647

默认值: 10

transform_to_numeric_operators

参数说明: 用于控制transform阶段操作符选择时的选择逻辑。

当双目运算符两端接的是varchar和int类型的变量时,启用此参数会将操作符的两端均解析为numeric类型的变量从而选择操作符。

例如,解析'1.1' + 1时:

  • 未启用此参数时,执行时报错,原因是解析阶段将varchar被解析为int类型,导致类型转换时报错。

  • 启用此参数后,varchar将被解析为numeric,执行不会报错。

该参数属于USERSET类型,请参考重设参数表1对应设置方法进行设置。

取值范围: 布尔型

  • on:开启该参数。

  • off:关闭该参数。

默认值: off

enable_hashjoin_nestloop

参数说明:此参数用于解决hashjoin因为存在可能的大量重复值导致分区不能分裂从而造成的OOM问题。

该参数属于USERSET类型,请参考重设参数表1对应设置方法进行设置。

取值范围:布尔型

  • on:开启hashjoin重复值落盘的功能。

  • off:关闭hashjoin重复值落盘的功能。

默认值:off

设置建议:当执行含有hashjoin算子的SQL时发生了OOM问题,并且数据的确存在大量重复值时,开启此参数则不会发生OOM,但性能会大幅度降低。