アダプティブ結合を使用したクエリパフォーマンスの向上 - Amazon Aurora

アダプティブ結合を使用したクエリパフォーマンスの向上

概要

アダプティブ結合は、Aurora PostgreSQL 17.4 のプレビュー機能であり、クエリパフォーマンスの向上に役立ちます。この機能はデフォルトで無効になっていますが、グローバルユーザー設定 (GUC) パラメータを使用して有効にできます。これはプレビュー機能であるため、デフォルトのパラメータ値は変更される場合があります。アダプティブ結合を有効にすると、ランタイム時にネストしたループ結合からハッシュ結合に動的に切り替えることで、クエリのパフォーマンスを最適化できます。この切り替えは、カーディナリティの見積りが不正確であるために、PostgreSQL オプティマイザがネストしたループ結合を誤って選択した場合に発生します。

アダプティブ結合の設定

アダプティブ結合は、次の 3 つの 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 を有効にする必要があります