更新时间:2024-11-12 GMT+08:00
分享

基因查询优化器

介绍基因查询优化器相关的参数。基因查询优化器(GEQO)是一种启发式的查询规划算法。这个算法减少了对复杂查询规划的时间,而且生成规划的开销有时也小于正常的详尽的查询算法。

geqo

参数说明控制基因查询优化的使用。

该参数通过执行gs_guc reload修改时,如果当前节点上的某个session的连接不是来自于客户端,而是来自于该节点所属集群上的其他节点,那么执行gs_guc reload后该参数在该session上不会立即生效,需与连接节点断开连接后重新连接才会生效。

参数类型:布尔型

参数单位:

取值范围

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

默认值on

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

设置建议:通常情况下在执行过程中不要关闭,geqo_threshold参数提供了更精细的控制GEQO的方法。

设置不当的风险与影响:若关闭geqo参数,则当查询语句涉及的表数量较大时,会采用动态规划枚举所有组合,优化器生成计划的开销极大。

geqo_threshold

参数说明如果执行语句的数量超过设计的FROM的项数,则会使用基因查询优化来执行查询。

  • 对于简单的查询,通常用详尽搜索方法,当涉及多个表的查询的时候,用GEQO可以更好地管理查询。
  • 一个FULL OUTER JOIN构造仅作为一个FROM项。

参数类型:整型

参数单位:

取值范围2 ~ 2147483647‬

默认值12

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

设置建议:推荐使用默认值,若可以接受动态规划的性能开销,可以调大此值;若较难接受动态规划的开销,可以调小此值。

设置不当的风险与影响:设置过大,可能导致动态规划枚举所有计划的开销难以接受;设置过小,可能损失计划的准确性。

geqo_effort

参数说明控制GEQO在规划时间和规划质量之间的平衡。

参数类型:整型

参数单位:

取值范围1 ~ 10

默认值5

  • geqo_effort实际上并没有直接做任何事情,只是用于计算其他影响GEQO的变量的默认值。也可以手动设置其他参数。
  • 比默认值大的数值增加了查询规划的时间,但是也增加了选中有效查询的几率。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:设置过大,可能导致查询规划的开销过大;设置过小,可能导致生成的查询计划质量较差。

geqo_pool_size

参数说明控制GEQO使用池的大小,也就是基因全体中的个体数量。

参数类型:整型

参数单位:

取值范围0 ~ 2147483647‬

默认值0

设置为0,表示使用系统自适应方式,GaussDB会基于geqo_effort和表的个数选取合适的值。其余情况至少设置为2,且有用的值一般在100到1000之间。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:设置过大,可能导致查询规划的开销过大;设置过小,可能导致生成的查询计划质量较差。

geqo_generations

参数说明控制GEQO使用的算法的迭代次数。

参数类型:整型

参数单位:

取值范围0 ~ 2147483647‬

默认值0

如果设置为0,则基于geqo_pool_size选取合适的值。其余情况至少设置为1,且有用的值介于100和1000之间。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:设置过大,可能导致查询规划的开销过大;设置过小,可能导致生成的查询计划质量较差。

geqo_selection_bias

参数说明控制GEQO的选择性偏好,即一个种群中的选择性压力。

参数类型:浮点型

参数单位:

取值范围1.5 ~ 2

默认值2

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

设置建议:推荐使用默认值。

设置不当的风险与影响:设置较高可能会导致GEQO算法更快地集中在一些优秀的计划上,而不是探索可行计划中的多样性。这可能会降低算法找到全局最优解的可能性,但可以提高找到可行的较优解的速度。

geqo_seed

参数说明控制GEQO使用的随机数生产器的初始化值,用来从顺序连接在一起的查询空间中查找随机路径。

参数类型:浮点型

参数单位:

取值范围0 ~ 1

默认值0

不同的值会改变搜索的连接路径,从而影响所找路径的优劣。

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

设置建议:推荐使用默认值。

设置不当的风险与影响:不同值会带来不同的随机性,可能影响连接路径生成的优劣。

相关文档