

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

# 查詢計劃管理
<a name="query-plan-management"></a>

統計資料、限制條件、環境設定、查詢參數繫結的變更，以及 PostgreSQL 資料庫引擎的升級都可能造成查詢計劃迴歸。*查詢計劃迴歸*是最佳化工具在對資料庫環境進行指定的變更之前選擇較不理想的計劃。

在 Amazon Aurora PostgreSQL 相容版本中，[查詢計劃管理 (QPM)](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.overview.html) 功能旨在確保計劃適應性和穩定性，無論可能導致查詢計劃回歸的資料庫環境變更為何。QPM 提供了對優化器的一些控制。您可以使用 QPM，您可以管理最佳化工具針對 SQL 查詢產生的查詢執行計劃。查詢執行計畫會強制最佳化處理程式從核准的重要查詢計劃中進行選擇，以最佳化其效能。

企業通常會在全域部署應用程式和資料庫，或為每個應用程式資料庫維護多個環境，例如開發、品質保證、測試、測試和生產。維護每個資料庫、每個環境以及所有資料庫的查詢執行計畫AWS 區域可能非常複雜且耗時。QPM 可以將 Amazon Aurora PostgreSQL 相容的受管計劃從一個資料庫匯出和匯入到另一個資料庫。這可協助您集中管理查詢執行計畫，並在全域部署資料庫。您可以使用此功能來調查生產前資料庫中的一組計劃，確認它們執行良好，然後將它們載入生產環境。

QPM 還提供了其他幾個好處。例如，您可以使用 QPM 改善無法在應用程式中變更的執行計畫，或無法將提示新增至陳述式時。QPM 也會自動偵測最佳化工具發現的新的最低成本計劃，因此除了效能之外，您還可以繼續最佳化成本。

建議您啟用 QPM。啟用 QPM 時，最佳化處理程式會使用您核准的最低成本計劃。這有助於防止回歸，並減少管理和修復次優計劃所需的時間。

使用 QPM 功能有兩種不同的方法：主動式和被動式。主動式方法旨在協助防止效能回歸的發生，而反應式方法則是設計用來在效能回歸發生後偵測和修復效能回歸。您可以根據每個查詢選擇您的方法。對於可能容易出現回歸或業務關鍵查詢的複雜查詢，您可以使用主動方法並核准這些查詢的最佳計劃。如果其他查詢在執行階段期間遇到查詢計劃回歸，您可以使用反應式方法。當您偵測到迴歸時，請將該計劃的狀態變更為，以`rejected`便最佳化處理程式選擇不同的已核准計劃。如需詳細資訊，請參閱 [Aurora PostgreSQL 查詢計畫管理的最佳做法](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.BestPractice.html) (Aurora 文件)。

## 查詢計劃管理如何運作？
<a name="qpm-operation"></a>

計劃會指派下列其中一種狀態：`approved``unapproved``preferred`、、或`rejected`。最佳化程式會將每個 Managed 陳述式的第一個產生的計劃設定為，`approved`然後將其他計劃的狀態設定為`unapproved`。稍後，您可以評估`unapproved`計劃並將其狀態變更為`approved``preferred`、或`rejected`。如需詳細資訊，請參閱[瞭解 Aurora PostgreSQL 查詢計畫管理](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Start.html) (Aurora 文件)。

受管理的計劃 最常見的方法是自動擷取所有執行兩次或兩次以上之敘述句的計劃。不過，您也可以手動擷取特定陳述式集的計劃。如需詳細資訊，請參閱[擷取 Aurora PostgreSQL 執行計畫](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.CapturePlans.html) (Aurora 文件)。

在您設定受管理的計劃之後，最佳化工具針對每個受管陳述式，使用有效且已啟用的最低成本`preferred`或`approved`計劃。如需詳細資訊，請參閱[最佳化工具如何選擇要執行的計劃](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.UsePlans.html#AuroraPostgreSQL.Optimize.UsePlans.ChoosePlans) (Aurora 文件)。

如需在與 Amazon Aurora PostgreSQL 相容中設定 QPM 功能的相關指示，請參閱[管理 Aurora PostgreSQL 的查詢執行計劃](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html) (Aurora 文件)。

## 限制
<a name="qpm-limitations"></a>

若要使用 QPM，您必須確定符合支援 SQL 陳述式的需求、陳述式未參考系統關係，且資料庫執行個體類別具有足夠的 vCPUs。如需詳細資訊，請參閱[支援的 SQL 陳述式](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.overview.html#AuroraPostgreSQL.Optimize.overview.features)和[查詢計劃管理限制](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.overview.html#AuroraPostgreSQL.Optimize.overview.limitations) (Aurora 文件)。

## 查詢計劃管理的使用案例
<a name="qpm-use-cases"></a>
+ **防止查詢計劃回歸** — 讓資料庫版本保持在最新狀態可提供許多好處，例如改善效能和安全性、存取新功能、修正已知問題，以及符合法規要求。不過，資料庫更新可能會造成某些查詢發生效能迴歸的風險。主要版本升級時，此風險較高，因為它們可能包含與現有應用程式查詢無法向後相容的變更。實作 QPM 可協助防止回歸，並在系統變更期間穩定效能。如果您重新整理統計資料、新增索引、變更參數或升級至 Amazon Aurora PostgreSQL 相容的新版本，QPM 會偵測到新計劃，但仍繼續使用核准的計劃，進而維持計劃的穩定性。
+ **測試功**能 — 您可以檢視所有受管理 SQL 敘述句的計劃歷史記錄，並評估新的 PostgreSQL 功能或計劃變更是否正在改善效能。然後，您可以決定是實施這些功能還是新計劃。如需詳細資訊，請參閱在 [dba\_plans 檢視中檢查 Aurora PostgreSQL 查詢](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.ViewPlans.html)計劃
+ **改善計劃** — 在某些情況下，您可能選擇修正不理想的計劃，而非拒絕、停用或刪除計劃。如需詳細資訊，請參閱[使用 pg\_hint\_plan 修正方案](https://docs.amazonaws.cn/en_us/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Maintenance.html#AuroraPostgreSQL.Optimize.Maintenance.pg_hint_plan) (Aurora 文件)。