本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
擷取複本中的 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 對等互連。如果發生跨區域容錯移轉,您必須將端點重新設定為新的主要資料庫叢集端點。