使用自适应联接提高查询性能
概览
自适应联接是 Aurora PostgreSQL 17.4 中的一项预览功能,有助于提高查询性能。默认情况下,此功能处于禁用状态,但您可以使用全局用户配置(GUC)参数将其启用。由于这是一项预览功能,因此默认参数值可能会发生变化。启用后,自适应联接通过在运行时从嵌套循环联接动态切换到哈希联接,有助于优化查询性能。当 PostgreSQL 优化器由于基数估计值不准确而错误地选择了嵌套循环连接时,就会发生这种切换。
配置自适应联接
可以使用以下三个 GUC 参数控制自适应联接:
GUC 参数 | 描述 | 默认值和配置选项 |
---|---|---|
apg_adaptive_join_crossover_multiplier | 此乘数与行交叉点结合使用,以确定何时从嵌套循环切换到哈希联接。行交叉点是 SQL 优化器估计嵌套循环和哈希联接操作具有相等成本的地方。较高的乘数值会降低自适应联接切换到哈希连接的可能性。 |
控制是否启用自适应联接
|
apg_adaptive_join_cost_threshold | 此参数设置最低查询成本阈值。对于低于此阈值的查询,自适应联接会自动禁用。这样可以防止简单查询中的性能开销,在这种查询中,规划自适应联接的成本可能会超过从嵌套循环切换到哈希联接的优势。 |
设置查询的最低成本阈值
|
apg_enable_parameterized_adaptive_join | 启用后,此参数将自适应联接功能扩展到参数化的嵌套循环联接。默认情况下,自适应联接仅适用于未参数化的嵌套循环联接,因为这些联接更有可能从切换到哈希联接而受益。参数化嵌套循环联接通常性能更好,而使得切换到哈希联接并不那么重要。 |
控制嵌套循环联接的自适应联接行为
注意要求先启用 |