Aurora PostgreSQL クエリ計画管理のパラメータリファレンス - Amazon Aurora

Aurora PostgreSQL クエリ計画管理のパラメータリファレンス

このセクションに記載されているパラメータを使用して、apg_plan_mgmt 拡張機能を設定できます。これらは、カスタム DB クラスターパラメータと Aurora PostgreSQL DB クラスターに関連付けられた DB パラメータグループで使用できます。これらのパラメータは、クエリ計画管理機能の動作と、それがオプティマイザに与える影響を制御します。クエリ計画管理のセットアップの詳細については、「Aurora PostgreSQL のクエリプラン管理をオンにする」を参照してください。次のパラメータを変更しても、apg_plan_mgmt 拡張機能はそのセクションで詳述されているように設定されていない場合は効果がありません。パラメータの変更については、「DB クラスターパラメータグループのパラメータの変更」および「DB インスタンスでの DB パラメータグループの使用」を参照してください。

apg_plan_mgmt.capture_plan_baselines

各 SQL ステートメントのオプティマイザによって生成されたクエリ実行計画をキャプチャし、dba_plans ビューに保存します。デフォルトでは、apg_plan_mgmt.max_plans パラメータで指定された保存可能な最大の計画数は 10,000 です。参考情報については、「apg_plan_mgmt.max_plans」を参照してください。

このパラメータは、カスタム DB クラスターのパラメータグループまたはカスタム DB パラメータグループで設定できます。このパラメータの値を変更しても、再起動は必要ありません。

デフォルト 許可される値 説明
オフ 自動 DB インスタンス上のすべてのデータベースの計画キャプチャを有効にします。2 回以上実行される SQL ステートメントごとに計画を収集します。大規模なワークロードや進化するワークロードにこの設定を使用すると、計画を安定化できます。
手動 計画キャプチャは、再度オフにするまで、後続のステートメントでのみ有効です。この設定を使用すると、特定の重要な SQL ステートメントのみ、または問題がある既知のクエリのクエリ実行計画をキャプチャできます。
オフ 計画のキャプチャをオフにします。

詳細については、「Aurora PostgreSQL 実行計画のキャプチャ」を参照してください。

apg_plan_mgmt.plan_capture_threshold

クエリ実行プランの合計コストがしきい値を下回った場合、プランがビューにキャプチャされないようにしきい値を指定します。apg_plan_mgmt.dba_plans

このパラメータの値を変更しても、再起動は必要ありません。

デフォルト 許可される値 説明
0 0 - 1.79769e+308

プランをキャプチャするための apg_plan_mgmt クエリプランの合計実行コストのしきい値を設定します。

詳細については、「dba_plans ビューで Aurora PostgreSQL クエリ計画を検証する」を参照してください。

apg_plan_mgmt.explain_hashes

EXPLAIN [ANALYZE] が出力の最後に sql_hash と plan_hash を表示するかどうかを指定します。このパラメータの値を変更しても、再起動は必要ありません。

デフォルト 許可される値 説明
0 0 (オフ) EXPLAIN は、hashes true オプションが指定されていないと、sql_hash と plan_hash を表示しません。
1 (オン) EXPLAIN は、hashes true オプションが指定されていないときでも、sql_hash と plan_hash を表示します。

apg_plan_mgmt.log_plan_Enforcement_result

QPM 管理プランが適切に使用されているかどうかを確認するために結果を記録する必要があるかどうかを指定します。保存されているジェネリックプランを使用すると、ログファイルにレコードは書き込まれません。このパラメータの値を変更しても、再起動は必要ありません。

デフォルト 許可される値 説明
none none プラン実施結果はログファイルに表示されません。
on_error QPM が管理プランを使用できなかった場合にのみ、プラン実施結果をログファイルに表示します。
すべて 成功と失敗の両方を含むすべてのプラン実施結果をログファイルに表示します。

apg_plan_mgmt.max_databases

Aurora PostgreSQL DB クラスターのライターインスタンスで、クエリ計画管理を使用できるデータベースの最大数を指定します。デフォルトでは、最大 10 個のデータベースでクエリ計画管理を使用できます。インスタンスに 10 個を超えるデータベースがある場合は、この設定値を変更できます。特定のインスタンスにあるデータベースの数を確認するには、psql を使用してインスタンスに接続します。次に、psql メタコマンドの \l を使用して、データベースを一覧表示します。

このパラメータの値を変更した場合、設定を有効にするためにインスタンスを再起動する必要があります。

デフォルト 許可される値 説明
10 10-2147483647 インスタンスでクエリ計画管理を使用できるデータベースの最大数です。

このパラメータは、カスタム DB クラスターのパラメータグループまたはカスタム DB パラメータグループで設定できます。

apg_plan_mgmt.max_plans

クエリプランマネージャが apg_plan_mgmt.dba_plans ビューで保持できる SQL ステートメントの最大数を設定します。Aurora PostgreSQL のすべてのバージョンで、このパラメータを 10000 以上に設定することをお勧めします。

このパラメータは、カスタム DB クラスターのパラメータグループまたはカスタム DB パラメータグループで設定できます。このパラメータの値を変更した場合、設定を有効にするためにインスタンスを再起動する必要があります。

デフォルト 許可される値 説明
10000 10-2147483647

apg_plan_mgmt.dba_plans ビューに保存できる計画の最大数。

Aurora PostgreSQL バージョン 10 以前では、デフォルトは 1,000 です。

詳細については、「dba_plans ビューで Aurora PostgreSQL クエリ計画を検証する」を参照してください。

apg_plan_mgmt.plan_hash_version

plan_hash 計算が対象とするユースケースを指定します。apg_plan_mgmt.plan_hash_version の上位バージョンは、下位バージョンのすべての機能をカバーします。例えば、バージョン 3 はバージョン 2 でサポートされるユースケースをカバーします。

このパラメータの値を変更した後は、apg_plan_mgmt.validate_plans('update_plan_hash') を呼び出す必要があります。apg_plan_mgmt がインストールされている各データベースの plan_hash 値とプランテーブルのエントリを更新します。詳細については、「計画の検証」を参照してください。

デフォルト 許可される値 説明
1 1 デフォルトの plan_hash 計算。
2 plan_hash 計算がマルチスキーマをサポートするように変更されました。
3 plan_hash 計算が、マルチスキーマをサポートし、パーティション化されたテーブルをサポートするように変更されました。
4 plan_hash 計算が並列演算子に対応し、マテリアライズノードをサポートするように変更されました。

apg_plan_mgmt.plan_retention_period

apg_plan_mgmt.dba_plans ビューで計画を保持する日数を指定し、それ以降は自動的に削除されます。デフォルトでは、計画は最後に使用されてから 32 日が経過すると削除されます (apg_plan_mgmt.dba_plans ビューの last_used 列)。この設定は、1 以上の任意の数に変更できます。

このパラメータの値を変更した場合、設定を有効にするためにインスタンスを再起動する必要があります。

デフォルト 許可される値 説明
32 1-2147483647 計画が最後に使用された日付から、計画が自動的に削除されるまでの最大日数。

詳細については、「dba_plans ビューで Aurora PostgreSQL クエリ計画を検証する」を参照してください。

apg_plan_mgmt.unapproved_plan_execution_threshold

オプティマイザによって未承認の計画を使用可能なコストのしきい値を指定します。デフォルトでは、しきい値は 0 で、オプティマイザは未承認の計画を実行しません。このパラメータを 100 などのごく低いコストのしきい値に設定すると、小さなプランに対するプラン適用のオーバーヘッドを回避できます。リアクティブスタイルのプラン管理では、このパラメータを 10000000 など、非常に大きな値に設定することもできます。これにより、オプティマイザはプラン適用のオーバーヘッドなしに、選択したすべてのプランを使用できます。ただし、不適切なプランが見つかった場合は、手動で「拒否」とマークして、次回使用されないようにすることができます。

このパラメータの値は、特定の計画を実行するためのコスト見積もりを表します。未承認計画が推定コストを下回る場合、オプティマイザはその計画を SQL ステートメントに使用します。dba_plans ビューで、キャプチャされた計画とそのステータス (承認済み、未承認) を確認できます。詳細については、「dba_plans ビューで Aurora PostgreSQL クエリ計画を検証する」を参照してください。

このパラメータの値を変更しても、再起動は必要ありません。

デフォルト 許可される値 説明
0 0-2147483647 未承認の計画が使用された場合、それ以下の見積もりの計画コスト

詳細については、「Aurora PostgreSQL 管理計画を使用する」を参照してください。

apg_plan_mgmt.use_plan_baselines

apg_plan_mgmt.dba_plans ビューでオプティマイザがキャプチャされ、保存された承認済み計画のいずれかを使用するように指定します。デフォルトでは、このパラメータはオフ (false) になっているため、オプティマイザが生成した最小コスト計画をそのまま使用します。このパラメータをオンにする (true に設定する) と、オプティマイザは計画ベースラインからステートメントのクエリ実行計画を選択するよう強制されます。詳細については、「Aurora PostgreSQL 管理計画を使用する」を参照してください。このプロセスの詳細を示すイメージを検索するには、「オプティマイザが実行する計画を選択する方法。」を参照してください。

このパラメータは、カスタム DB クラスターのパラメータグループまたはカスタム DB パラメータグループで設定できます。このパラメータの値を変更しても、再起動は必要ありません。

デフォルト 許可される値 説明
false true apg_plan_mgmt.dba_plans から、承認済み、優先、未承認のいずれかの計画を使用してください。いずれもオプティマイザの評価基準を満たさない場合は、オプティマイザが生成した最小コスト計画を使用できます。詳細については、「オプティマイザが実行する計画を選択する方法。」を参照してください。
false オプティマイザが生成した最小コスト計画を使用します。

必要に応じて、キャプチャしたさまざまな計画の応答時間を評価し、計画のステータスを変更できます。詳細については、「Aurora PostgreSQL 実行計画の管理」を参照してください。

auto_explain.hashes

auto_explain の出力に sql_hash と plan_hash を表示するかどうかを指定します。このパラメータの値を変更しても、再起動は必要ありません。

デフォルト 許可される値 説明
0 (オフ) 0 (オフ) auto_explain 結果に sql_hash と plan_hash は表示されません。
1 (オン) auto_explain 結果に sql_hash と plan_hash が表示されます。