Aurora SQL 查詢計劃管理參數參考 - Amazon Aurora

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

Aurora SQL 查詢計劃管理參數參考

您可以使用本節中列出的參數設定 apg_plan_mgmt 擴充功能的偏好設定。您可以在自訂資料庫叢集參數以及與 Aurora Postgre SQL 資料庫叢集關聯的資料庫參數群組中使用這些參數。這些參數會控制查詢計劃管理功能的行為,以及它對最佳化工具的影響。如需設定查詢計劃管理的詳細資訊,請參閱 打開 Aurora 郵政SQL查詢計劃管理。如果 apg_plan_mgmt 擴充功能未按照該部分的詳細資訊進行設定,則變更下列參數沒有任何作用。如需修改參數的相關資訊,請參閱 在 Amazon Aurora 中修改資料庫叢集參數群組中的參數極光資料庫執行個體的資料庫參數群

apg_plan_mgmt.capture_plan_baselines

擷取最佳化處理程式針對每個SQL陳述式產生的查詢執行計畫,並將它們儲存在dba_plans檢視中。根據預設,可儲存的計劃數目上限為 10,000,如 apg_plan_mgmt.max_plans 參數所指定。如需參考資訊,請參閱 apg_plan_mgmt.max_plans

您可以在自訂資料庫叢集參數群組或自訂資料庫參數群組中設定此參數。變更此參數的值不需要重新開機。

預設 允許的值 描述
off 自動 開啟資料庫執行個體上所有資料庫的計劃擷取。針對每個執行兩次或多次的SQL敘述句收集計劃。對於大型或不斷發展的工作負載使用此設定,以提供計劃穩定性。
手動 只開啟後續陳述式的計劃擷取,直到您再次將其關閉為止。使用此設定可讓您只擷取特定重要SQL陳述式的查詢或已知有問題的查詢的查詢執行計畫。
off 關閉計劃擷取。

如需詳細資訊,請參閱擷取 Aurora PostgreSQL 執行計畫

apg_plan_mgmt.plan_capture_threshold

指定一個閾值,以便如果查詢執行計畫的總成本低於閾值,則不會在 apg_plan_mgmt.dba_plans 檢視中擷取該計畫。

變更此參數的值不需要重新開機。

預設 允許的值 描述
0 0 - 1.79769e+308

設定擷取計畫的 apg_plan_mgmt 查詢計畫總執行成本的閾值。

如需詳細資訊,請參閱在 dba_plans 檢視中檢查 Aurora PostgreSQL 查詢計劃

apg_plan_mgmt.explain_hashes

指定 EXPLAIN [ANALYZE] 是否在其輸出尾端顯示 sql_hashplan_hash。變更此參數的值不需要重新開機。

預設 允許的值 描述
0 0 (關閉) EXPLAIN不顯示沒有散列真實選項的 sql_hash 和計劃散列。
1 (開啟) EXPLAIN顯示沒有散列真實選項的 sql_hash 和計劃散列。

apg_plan_mgmt.log_plan_enforcement_result

指定是否必須記錄結果,以查看QPM管理的計劃是否正確使用。使用存放的一般計畫時,日誌檔中不會寫入任何記錄。變更此參數的值不需要重新開機。

預設 允許的值 描述
不會在日誌檔中顯示任何計畫強制執行結果。
on_error 僅在QPM無法使用受管理計劃時,在記錄檔中顯示計劃強制執行結果。
全部 在日誌檔中顯示所有計畫強制執行結果,包括成功和失敗。

apg_plan_mgmt.max_databases

指定 Aurora Postgre 資料SQL庫叢集之寫入器執行個體上可以使用查詢計劃管理的資料庫數目上限。預設情況下,查詢計劃管理最多可支援 10 個資料庫。如果執行個體上有 10 個以上的資料庫,您可以變更此設定的值。若要瞭解指定執行個體上有多少資料庫,請使用 psql 連線到該執行個體。然後,使用 psql 元命令,\l,以列出資料庫。

變更此參數的值時,您必須重新啟動執行個體,設定才會生效。

預設 允許的值 描述
10 10-2147483647 執行個體上可使用查詢計畫管理的資料庫數量上限。

您可以在自訂資料庫叢集參數群組或自訂資料庫參數群組中設定此參數。

apg_plan_mgmt.max_plans

設定查詢計劃管理員可以在apg_plan_mgmt.dba_plans檢視中維護的SQL陳述式數目上限。對於所有 Aurora Postgre SQL 版本,我們建議將此參數設定為10000或更高。

您可以在自訂資料庫叢集參數群組或自訂資料庫參數群組中設定此參數。變更此參數的值時,您必須重新啟動執行個體,設定才會生效。

預設 允許的值 描述
10000 10-2147483647

可儲存於 apg_plan_mgmt.dba_plans 檢視的計劃數目上限。

Aurora 郵政版本 10 及以前SQL版本的默認值為 1000。

如需詳細資訊,請參閱在 dba_plans 檢視中檢查 Aurora PostgreSQL 查詢計劃

apg_plan_mgmt.plan_hash_version

指定 plan_hash 計算旨在涵蓋的使用案例。較高版本的 apg_plan_mgmt.plan_hash_version 涵蓋了較低版本的所有功能。例如,第 3 版涵蓋了第 2 版支援的使用案例。

變更此參數的值之後必須接著呼叫 apg_plan_mgmt.validate_plans('update_plan_hash')。其會更新每個資料庫 (已安裝 apg_plan_mgmt) 中的 plan_hash,以及計畫資料表中的項目。如需詳細資訊,請參閱 驗證計劃

預設 允許的值 描述
1 1 預設 plan_hash 計算。
2 針對多結構描述支援而修改的 plan_hash 計算。
3 針對多結構描述支援和分割資料表支援而修改的 plan_hash 計算。
4 plan_hash 計算針對平行運算子進行了修改並支援具體化節點。

apg_plan_mgmt.plan_retention_period

指定 apg_plan_mgmt.dba_plans 檢視中保留計劃的天數,經過此日期後,它們會自動刪除。根據預設,計劃自從上次使用以來經過 32 天時就會被刪除 (apg_plan_mgmt.dba_plans 檢視中的 last_used 資料欄)。您可以將此設定變更為任意數字、1 和以上。

變更此參數的值時,您必須重新啟動執行個體,設定才會生效。

預設 允許的值 描述
32 1-2147483647 上次使用計劃後到該計劃被自動刪除的天數上限。

如需詳細資訊,請參閱在 dba_plans 檢視中檢查 Aurora PostgreSQL 查詢計劃

apg_plan_mgmt.unapproved_plan_execution_threshold

指定一個成本閾值,低於該閾值時,最佳化工具可以使用未經核准的計畫。預設情況下,閾值為 0,因此最佳化工具不會執行未經核准的計畫。將此參數設為非常低的成本閾值 (例如 100),可以避免普通計畫的計畫執行開銷。您也可以使用計畫管理的被動式方式,將此參數設定為非常大的值,例如 10000000。這可讓最佳化工具使用所有選定的計畫,不會產生強制實施計畫的開銷。但是,當發現錯誤的計畫時,您可以手動將其標記為「拒絕」,以便下次不再使用。

此參數的值代表執行指定計劃的成本預估值。如果「未核准」計劃低於該預估成本,最佳化處理程式會將其用於SQL陳述式。您可以在 dba_plans 檢視中查看擷取的計劃及其狀態 (已核准、未核准)。如需進一步了解,請參閱 在 dba_plans 檢視中檢查 Aurora PostgreSQL 查詢計劃

變更此參數的值不需要重新開機。

預設 允許的值 描述
0 0-2147483647 預估計劃成本,低於此成本時,則使用未核准計劃。

如需詳細資訊,請參閱使用 Aurora PostgreSQL 受管計劃

apg_plan_mgmt.use_plan_baselines

指定最佳化工具應使用已擷取並儲存於 apg_plan_mgmt.dba_plans 檢視的其中一個「已核准」計劃。根據預設,此參數為 off (false),導致最佳化工具使用其產生的最低成本計畫,而無需進一步評估。開啟這個參數 (將其設定為 true) 會強制最佳化工具從其計劃基準中選擇陳述式的查詢執行計畫。如需詳細資訊,請參閱使用 Aurora PostgreSQL 受管計劃。若要尋找詳細說明此程序的圖片,請參閱 最佳化工具如何選擇要執行的計劃

您可以在自訂資料庫叢集參數群組或自訂資料庫參數群組中設定此參數。變更此參數的值不需要重新開機。

預設 允許的值 描述
false true 使用 apg_plan_mgmt.dba_plans 中「已核准」、「偏好」或「未核准」的計劃。如果這些計劃都不符合最佳化工具的所有評估標準,則可以使用自己產生的最低成本計劃。如需詳細資訊,請參閱最佳化工具如何選擇要執行的計劃
false 使用最佳化工具產生的最低成本計劃。

您可以視需要評估不同擷取計劃的回應時間,並變更計劃狀態。如需詳細資訊,請參閱改善 Aurora 後SQL查詢計劃

auto_explain.hashes

指定 auto_explain 輸出是否顯示 sql_hash 和 plan_hash。變更此參數的值不需要重新開機。

預設 允許的值 描述
0 (關閉) 0 (關閉) auto_explain 結果不顯示 sql_hashplan_hash
1 (開啟) auto_explain 結果顯示 sql_hashplan_hash