本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Aurora 郵報SQL查詢計劃管理
為 Aurora Postgre SQL 資料庫叢集開啟查詢計劃管理後,最佳化工具會針對多次處理的任何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 Postgre 資料庫叢集列出目前在檢視中的計劃詳細資SQL料。
sql_hash
— SQL 陳述式的識別碼,也就是陳述式標準化文字的SQL雜湊值。plan_hash
– 計劃的唯一識別碼,其為sql_hash
與計劃雜湊的組合。status
– 計劃的狀態。最佳化工具可以執行已核准的計劃。enabled
– 指出計劃已備妥可供使用 (true) 或未備妥 (false)。plan_outline
– 用來重建實際執行計劃的計劃表示法。樹狀結構中的運算子會對應至EXPLAIN輸出中的運算子。
apg_plan_mgmt.dba_plans
檢視還有更資料欄,其中包含計劃的所有詳細資訊,例如上次使用計劃的時間。如需完整詳細資訊,請參閱 對於 Aurora 郵政兼容版本的計劃視圖的參考 SQL。
規範化和散列 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
預覽此計劃。如需詳細資訊,請參閱 分析最佳化工具的所選擇計劃。如需概述選擇計劃之程序的影像,請參閱 最佳化工具如何選擇要執行的計劃。