使用自适应联接提高查询性能 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用自适应联接提高查询性能

概览

自适应联接是 Aurora PostgreSQL 17.4 中的一项预览功能,有助于提高查询性能。默认情况下,此功能处于禁用状态,但您可以使用全局用户配置(GUC)参数将其启用。由于这是一项预览功能,因此默认参数值可能会发生变化。启用后,自适应联接通过在运行时从嵌套循环联接动态切换到哈希联接,有助于优化查询性能。当 PostgreSQL 优化器由于基数估计值不准确而错误地选择了嵌套循环连接时,就会发生这种切换。

配置自适应联接

可以使用以下三个 GUC 参数控制自适应联接:

自适应联接配置参数
GUC 参数 描述 默认值和配置选项
apg_adaptive_join_crossover_multiplier 此乘数与行交叉点结合使用,以确定何时从嵌套循环切换到哈希联接。行交叉点是 SQL 优化器估计嵌套循环和哈希联接操作具有相等成本的地方。较高的乘数值会降低自适应联接切换到哈希连接的可能性。

控制是否启用自适应联接

  • 默认值:-1(禁用)

  • 有效范围:-1 到 DBL_MAX

  • 要启用:设置为 >= 1

apg_adaptive_join_cost_threshold 此参数设置最低查询成本阈值。对于低于此阈值的查询,自适应联接会自动禁用。这样可以防止简单查询中的性能开销,在这种查询中,规划自适应联接的成本可能会超过从嵌套循环切换到哈希联接的优势。

设置查询的最低成本阈值

  • 默认值:100

  • 有效范围:0 到 DBL_MAX

apg_enable_parameterized_adaptive_join 启用后,此参数将自适应联接功能扩展到参数化的嵌套循环联接。默认情况下,自适应联接仅适用于未参数化的嵌套循环联接,因为这些联接更有可能从切换到哈希联接而受益。参数化嵌套循环联接通常性能更好,而使得切换到哈希联接并不那么重要。

控制嵌套循环联接的自适应联接行为

  • 默认值:false

  • 有效值:true/false

    • 当为 false 时:仅适用于未参数化的嵌套循环联接

    • 当为 true 时:同时适用于参数化和非参数化的嵌套循环联接

注意

要求先启用 apg_adaptive_join_crossover_multiplier