使用自適應聯結改善查詢效能 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用自適應聯結改善查詢效能

概觀

自適應聯結是 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 需要先啟用