更新时间:2025-07-08 GMT+08:00
分享

优化器方法配置

这些配置参数提供了影响查询优化器选择查询规划的原始方法。如果优化器为特定的查询选择的缺省规划并不是最优的,可以通过使用这些配置参数强制优化器选择一个不同的规划来临时解决这个问题。更好的方法包括调节优化器开销常量、手动运行ANALYZE、增加配置参数default_statistics_target的值。

enable_hashjoin

参数说明:控制优化器对Hash连接规划类型的使用。

取值范围:布尔型

  • on表示使用。
  • off表示不使用。

默认值:on

enable_nestloop

参数说明:控制优化器对内表全表扫描嵌套循环连接规划类型的使用。完全消除嵌套循环连接是不可能的,但是关闭这个变量就会让优化器在存在其他方法的时候优先选择其他方法。

取值范围:布尔型

  • on表示使用。
  • off表示不使用。

默认值:off

best_agg_plan

参数说明:对于stream下的Agg操作,优化器会生成三种计划:
  1. hashagg+gather(redistribute)+hashagg。
  2. redistribute+hashagg(+gather)。
  3. hashagg+redistribute+hashagg(+gather)。

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

取值范围:0,1,2,3

  • 取值为1时,强制生成第一种计划。
  • 取值为2时,如果group by列可以重分布,强制生成第二种计划,否则生成第一种计划。
  • 取值为3时,如果group by列可以重分布,强制生成第三种计划,否则生成第一种计划。
  • 取值为0时,优化器会根据以上三种计划的估算cost选择最优的一种计划生成。

默认值:0

turbo_engine_version

参数说明:对于建表指定turbo存储格式表(表属性中enable_turbo_store参数设置为on),且当查询不涉及merge join或sort agg算子时,执行器可走turbo执行引擎,执行器部分性能可获得成倍性能提升。

取值范围:0,1,2,3

  • 取值为0时,表示turbo执行引擎关闭。
  • 取值为1时,表示仅针对单表agg查询场景使用turbo执行引擎。
  • 取值为2时,表示仅针对单表agg或多表join关联查询场景使用turbo执行引擎。
  • 取值为3时,对于大多常用算子可使用turbo执行引擎加速,不支持算子如merge join,sort agg等算子。数据量较大且turbo_engine_version取值为3时,merge join,sort agg算子出现的情况较少,因此基本可以实现任意SQL语句的turbo执行引擎加速。

默认值:3

跨VW场景暂不建议打开turbo执行引擎。

agg_redistribute_enhancement

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

取值范围:布尔型

  • on表示会选择估算distinct值最多的一个可重分布列作为重分布列。
  • off表示会选择第一个可重分布列为重分布列。

默认值:off

skew_option

参数说明:控制是否使用优化策略。

取值范围:字符串

  • off:关闭策略。
  • normal:采用激进策略。对于不确定是否出现倾斜的场景,认为存在倾斜,并进行相应优化。
  • lazy:采用保守策略。对于不确定是否出现倾斜场景,认为不存在倾斜,不进行优化。

默认值:normal

相关文档