

# Aurora PostgreSQL クエリ計画管理のパラメータリファレンス
<a name="AuroraPostgreSQL.Optimize.Parameters"></a>

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

**Topics**
+ [apg\_plan\_mgmt.capture\_plan\_baselines](#AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines)
+ [apg\_plan\_mgmt.plan\_capture\_threshold](#AuroraPostgreSQL.Optimize.Parameters.plan_capture_threshold)
+ [apg\_plan\_mgmt.explain\_hashes](#AuroraPostgreSQL.Optimize.Parameters.explain_hashes)
+ [apg\_plan\_mgmt.log\_plan\_Enforcement\_result](#AuroraPostgreSQL.Optimize.Parameters.log_plan_enforcement_result)
+ [apg\_plan\_mgmt.max\_databases](#AuroraPostgreSQL.Optimize.Parameters.max_databases)
+ [apg\_plan\_mgmt.max\_plans](#AuroraPostgreSQL.Optimize.Parameters.max_plans)
+ [apg\_plan\_mgmt.plan\_hash\_version](#AuroraPostgreSQL.Optimize.Parameters.plan_hash_version)
+ [apg\_plan\_mgmt.plan\_retention\_period](#AuroraPostgreSQL.Optimize.Parameters.plan_retention_period)
+ [apg\_plan\_mgmt.unapproved\_plan\_execution\_threshold](#AuroraPostgreSQL.Optimize.Parameters.unapproved_plan_execution_threshold)
+ [apg\_plan\_mgmt.use\_plan\_baselines](#AuroraPostgreSQL.Optimize.Parameters.use_plan_baselines)
+ [auto\_explain.hashes](#AuroraPostgreSQL.Optimize.Parameters.auto_explain.hashes)

## apg\_plan\_mgmt.capture\_plan\_baselines
<a name="AuroraPostgreSQL.Optimize.Parameters.capture_plan_baselines"></a>

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

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



- **オフ**
  - **許可される値:** 自動 / **説明:** この設定をセッションレベルまたはパラメータグループに適用して、2 回以上使用される計画をキャプチャします。
  - **許可される値:** 手動 / **説明:** この設定をセッションレベルまたはパラメータグループに適用して、1 回以上使用される計画をキャプチャします。
  - **許可される値:** 化 / **説明:** 計画のキャプチャをオフにします。



詳細については、「[Aurora PostgreSQL 実行計画のキャプチャ](AuroraPostgreSQL.Optimize.CapturePlans.md)」を参照してください。

## apg\_plan\_mgmt.plan\_capture\_threshold
<a name="AuroraPostgreSQL.Optimize.Parameters.plan_capture_threshold"></a>

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

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


| デフォルト | 許可される値 | 説明 | 
| --- | --- | --- | 
| 0 | 0 - 1.79769e\+308 | プランをキャプチャするための `apg_plan_mgmt` クエリプランの合計実行コストのしきい値を設定します。 | 

詳細については、「[dba\_plans ビューで Aurora PostgreSQL クエリ計画を検証する](AuroraPostgreSQL.Optimize.ViewPlans.md)」を参照してください。

## apg\_plan\_mgmt.explain\_hashes
<a name="AuroraPostgreSQL.Optimize.Parameters.explain_hashes"></a>

`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
<a name="AuroraPostgreSQL.Optimize.Parameters.log_plan_enforcement_result"></a>

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



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



## apg\_plan\_mgmt.max\_databases
<a name="AuroraPostgreSQL.Optimize.Parameters.max_databases"></a>

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

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


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

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

## apg\_plan\_mgmt.max\_plans
<a name="AuroraPostgreSQL.Optimize.Parameters.max_plans"></a>

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

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


| デフォルト | 許可される値 | 説明 | 
| --- | --- | --- | 
| 10000 | 10-2147483647 | `apg_plan_mgmt.dba_plans` ビューに保存できる計画の最大数。<br />Aurora PostgreSQL バージョン 10 以前では、デフォルトは 1,000 です。 | 

詳細については、「[dba\_plans ビューで Aurora PostgreSQL クエリ計画を検証する](AuroraPostgreSQL.Optimize.ViewPlans.md)」を参照してください。

## apg\_plan\_mgmt.plan\_hash\_version
<a name="AuroraPostgreSQL.Optimize.Parameters.plan_hash_version"></a>

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

 このパラメータの値を変更した後は、`apg_plan_mgmt.validate_plans('update_plan_hash')` を呼び出す必要があります。apg\_plan\_mgmt がインストールされている各データベースの plan\_hash 値とプランテーブルのエントリを更新します。詳細については、[計画の検証](AuroraPostgreSQL.Optimize.Deleting.md#AuroraPostgreSQL.Optimize.Maintenance.ValidatingPlans)を参照してください。



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



## apg\_plan\_mgmt.plan\_retention\_period
<a name="AuroraPostgreSQL.Optimize.Parameters.plan_retention_period"></a>

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

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


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

詳細については、「[dba\_plans ビューで Aurora PostgreSQL クエリ計画を検証する](AuroraPostgreSQL.Optimize.ViewPlans.md)」を参照してください。

## apg\_plan\_mgmt.unapproved\_plan\_execution\_threshold
<a name="AuroraPostgreSQL.Optimize.Parameters.unapproved_plan_execution_threshold"></a>

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

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

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


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

詳細については、「[Aurora PostgreSQL 管理計画を使用する](AuroraPostgreSQL.Optimize.UsePlans.md)」を参照してください。

## apg\_plan\_mgmt.use\_plan\_baselines
<a name="AuroraPostgreSQL.Optimize.Parameters.use_plan_baselines"></a>

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

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



- **false**
  - **許可される値:** true / **説明:** apg\_plan\_mgmt.dba\_plans から、承認済み、優先、未承認のいずれかの計画を使用してください。いずれもオプティマイザの評価基準を満たさない場合は、オプティマイザが生成した最小コスト計画を使用できます。詳細については、「[オプティマイザが実行する計画を選択する方法。](AuroraPostgreSQL.Optimize.UsePlans.md#AuroraPostgreSQL.Optimize.UsePlans.ChoosePlans)」を参照してください。
  - **許可される値:** false / **説明:** オプティマイザが生成した最小コスト計画を使用します。



必要に応じて、キャプチャしたさまざまな計画の応答時間を評価し、計画のステータスを変更できます。詳細については、「[Aurora PostgreSQL クエリ計画の改善](AuroraPostgreSQL.Optimize.Maintenance.md)」を参照してください。

## auto\_explain.hashes
<a name="AuroraPostgreSQL.Optimize.Parameters.auto_explain.hashes"></a>

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



- **0 (オフ)**
  - **許可される値:** 0 (オフ) / **説明:** auto\_explain 結果に sql\_hash と plan\_hash は表示されません。
  - **許可される値:** 1 (オン) / **説明:** auto\_explain 結果に sql\_hash と plan\_hash が表示されます。

