擷取複本中的 Aurora PostgreSQL 執行計畫 - Amazon Aurora

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

擷取複本中的 Aurora PostgreSQL 執行計畫

QPM (查詢計畫管理) 可讓您擷取 Aurora 複本產生的查詢計畫,並將其儲存在 Aurora 資料庫叢集的主要資料庫執行個體上。您可以從所有 Aurora 複本收集查詢計畫,並在主要執行個體的中央永久性資料表中維護一組最佳計畫。然後,您可以在需要時將這些計畫套用至其他複本。這可協助您維護執行計畫的穩定性,並改善資料庫叢集和引擎版本的查詢效能。

先決條件

在 Aurora 複本中開啟 capture_plan_baselines parameter - 將 capture_plan_baselines 參數設定為自動或手動,以在 Aurora 複本中擷取計畫。如需更多詳細資訊,請參閱 apg_plan_mgmt.capture_plan_baselines

安裝 postgres_fdw 擴充功能 - 您必須安裝 postgres_fdw 外部資料包裝函式,才能在 Aurora 複本中擷取計畫。在每個資料庫中執行下列命令,以安裝擴充功能。

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

管理 Aurora 複本的計畫擷取

開啟 Aurora 複本的計畫擷取

您必須擁有在 Aurora 複本中建立或移除計畫擷取的 rds_superuser 權限。如需有關使用者角色和權限的詳細資訊,請參閱了解 PostgreSQL 角色和權限

若要擷取計畫,請在寫入器資料庫執行個體中呼叫函數 apg_plan_mgmt.create_replica_plan_capture,如下所示:

postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('cluster_endpoint', 'password');
  • cluster_endpoint - cluster_endpoint (寫入器端點) 為 Aurora 複本中的計畫擷取提供容錯移轉支援。

  • 密碼 - 我們建議您在建立密碼時遵循以下準則以增強安全性:

    • 必須包含至少 8 個字元。

    • 至少須包含一個大寫字母、一個小寫字母和一個數字。

    • 必須至少有一個特殊字元 (?!#<>* 等等)。

注意

如果您變更叢集端點、密碼或連接埠號碼,則必須使用叢集端點和密碼再次執行 apg_plan_mgmt.create_replica_plan_capture(),以重新初始化計畫擷取。如果沒有,從 Aurora 複本擷取計畫將會失敗。

關閉 Aurora 複本的計畫擷取

您可以在 Aurora 複本中關閉 capture_plan_baselines 參數,方法是在「參數」群組中將其值設定為 off

移除 Aurora 複本的計畫擷取

您可以完全移除 Aurora 複本中的計畫擷取,但在執行之前請務必先確定。若要移除計畫擷取,請呼叫 apg_plan_mgmt.remove_replica_plan_capture,如下所示:

postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();

您必須再次呼叫 apg_plan_mgmt.create_replica_plan_capture(),以使用叢集端點和密碼在 Aurora 複本中開啟計畫擷取。

疑難排解

接下來,如果 Aurora 複本未按預期擷取計畫,您可以找到疑難排解的概念和解決方法。

  • 參數設定 - 檢查 capture_plan_baselines 參數是否設定為適當的值以開啟計畫擷取。

  • postgres_fdw 擴充功能已安裝 - 使用以下查詢來檢查 postgres_fdw 是否已安裝。

    postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  • 呼叫 create_replica_plan_capture() - 使用下列命令來檢查使用者映射是否存在。否則,請呼叫 create_replica_plan_capture() 以初始化功能。

    postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • 叢集端點和連接埠號碼 - 檢查叢集端點和連接埠號碼 (如果適用)。如果這些值不正確,將不會顯示任何錯誤訊息。

    使用以下命令來驗證是否在 create() 中是否使用了端點,並檢查它駐留在哪個資料庫中:

    postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • reload() - 在 Aurora 複本中呼叫 apg_plan_mgmt.delete_plan() 後,必須呼叫 apg_plan_mgmt.reload() 才能使刪除函數生效。這樣可確保變更已成功實施。

  • 密碼 - 您必須依照上述指南在 create_replica_plan_capture() 中輸入密碼。否則,您將收到錯誤訊息。如需詳細資訊,請參閱 管理 Aurora 複本的計畫擷取。使用符合要求的另一個密碼。

  • 跨區域連線 - Aurora 全球資料庫也支援 Aurora 複本中的計畫擷取,其中寫入器執行個體和 Aurora 複本可以位於不同的區域。寫入器執行個體和跨區域複本必須能夠使用 VPC 對等互連進行通訊。如需詳細資訊,請參閱 VPC 對等互連。如果發生跨區域容錯移轉,您必須將端點重新設定為新的主要資料庫叢集端點。