本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解 Aurora PostgreSQL 查詢計劃管理
為 Aurora PostgreSQL 資料庫叢集開啟查詢計劃管理後,最佳化工具會針對其處理多次的任何 SQL 陳述式產生並儲存查詢執行計劃。最佳化工具一律會將受管陳述式第一個產生之計劃的狀態設定為 Approved
,並將它儲存於 dba_plans
檢視中。
針對受管陳述式儲存的核准計劃集稱為計劃基線。當您的應用程式執行時,最佳化工具可能會針對受管陳述式產生額外計劃。最佳化工具會將額外的擷取計劃設為 Unapproved
狀態。
之後,您可以判斷 Unapproved
計劃是否表現良好,然後將它們變更為 Approved
、Rejected
或 Preferred
。若要這麼做,您可以使用 apg_plan_mgmt.evolve_plan_baselines
函數或 apg_plan_mgmt.set_plan_status
函數。
當最佳化工具產生 SQL 陳述式的計劃時,查詢計劃管理會將計劃儲存在 apg_plan_mgmt.plans
資料表中。已獲授與 apg_plan_mgmt
角色的資料庫使用者可以透過查詢 apg_plan_mgmt.dba_plans
檢視來查看計劃詳細資訊。例如,下列查詢會針對非生產 Aurora PostgreSQL 資料庫叢集列出檢視中目前計劃的詳細資訊。
sql_hash
– SQL 陳述式的識別碼,其為 SQL 陳述式標準化文字的雜湊值。plan_hash
– 計劃的唯一識別碼,其為sql_hash
與計劃雜湊的組合。status
– 計劃的狀態。最佳化工具可以執行已核准的計劃。enabled
– 指出計劃已備妥可供使用 (true) 或未備妥 (false)。plan_outline
– 用來重建實際執行計劃的計劃表示法。樹狀結構中的運算子會對應到 EXPLAIN 輸出中的運算子。
apg_plan_mgmt.dba_plans
檢視還有更資料欄,其中包含計劃的所有詳細資訊,例如上次使用計劃的時間。如需完整詳細資訊,請參閱 apg_plan_mgmt.dba_plans 檢視的參考。
標準化和 SQL 雜湊
在 apg_plan_mgmt.dba_plans
檢視中,您可以透過 SQL 雜湊值來識別受管陳述式。SQL 雜湊是根據已去掉某些差異 (例如常值) 的 SQL 陳述式標準化表示法來計算。
每個 SQL 陳述式的標準化程序都會保留空格和大小寫,因此您仍然可以閱讀並了解 SQL 陳述式的要點。標準化會移除或取代下列項目。
前導區塊註釋
EXPLAIN 關鍵字和 EXPLAIN 選項,以及 EXPLAIN ANALYZE
尾隨空格
所有常值
以下列陳述式為例。
/*Leading comment*/ EXPLAIN SELECT /* Query 1 */ * FROM t WHERE x > 7 AND y = 1;
最佳化工具將此陳述式標準化如下。
SELECT /* Query 1 */ * FROM t WHERE x > CONST AND y = CONST;
標準化允許相同的 SQL 雜湊用於類似的 SQL 陳述式,這些陳述式可能僅在其常值或參數值有所不同。換言之,相同的 SQL 雜湊可能存在多個計劃,而不同的計劃在不同條件下成為最佳。
注意
與不同結構描述搭配使用的單一 SQL 陳述式有不同的計畫,因為它在執行時繫結至特定結構描述。規劃工具會將統計資料用於結構描述繫結來選擇最佳計劃。
若要深入了解最佳化工具如何選擇計劃,請參閱 使用 Aurora PostgreSQL 受管計劃。在該節中,您可以了解如何在實際使用計劃之前使用 EXPLAIN
和 EXPLAIN ANALYZE
預覽此計劃。如需詳細資訊,請參閱分析最佳化工具的所選擇計劃。如需概述選擇計劃之程序的影像,請參閱 最佳化工具如何選擇要執行的計劃。