本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
工作負載管理
您可以將 Amazon Redshift WLM 設定為使用自動或WLM手動 執行WLM。
透過 Amazon Redshift,您可以管理和排定並行查詢和使用者工作負載的優先順序,以最佳化效能和資源使用率。工作負載管理 (WLM) 可讓您定義佇列、使用者群組和其他建構,以控制配置給不同類型查詢或使用者的資源。
下列各節概述 Amazon Redshift 中的特定工作負載管理功能,並引導您完成其組態和監控。
自動 WLM
若要最大化系統輸送量並有效使用資源,您可以讓 Amazon Redshift 管理資源的分割方式,以使用自動 執行並行查詢WLM。自動WLM管理執行查詢所需的資源。Amazon Redshift 會決定多少個查詢並行執行和分配多少記憶體給每個分派的查詢。當您想要 Amazon Redshift 管理資源的分割方式以執行並行查詢WLM時,請使用 Auto。如需詳細資訊,請參閱實作自動 WLM。
使用並行擴展和自動 WLM,您可以支援幾乎無限制的並行使用者和並行查詢,同時具有一致的快速查詢效能。如需詳細資訊,請參閱並行擴展。
注意
在大多數情況下,我們建議您使用自動 WLM。如果您使用的是手動,WLM而且想要從 遷移至自動 WLM,請參閱 從手動遷移WLM至自動 WLM。
使用 Auto WLM,可以為佇列中的工作負載定義查詢優先順序。如需查詢優先順序的相關資訊,請參閱 查詢優先順序。
手動 WLM
您可能有多個工作階段或使用者同時執行查詢。有些查詢可能會長時間使用叢集資源,並影響其他查詢的效能。手動WLM可協助管理特殊使用案例。當您想要對並行進行更多控制WLM時,請使用 手動。
您可以修改WLM組態來為長時間執行的查詢和短時間執行的查詢建立個別佇列,藉此管理系統效能。在執行時間,您可以根據使用者群組或查詢群組,將查詢路由至這些佇列。
您可以設定規則,以根據執行查詢的使用者,或您指定的標籤,將查詢路由至特定的佇列。您也可以設定要配置給每個佇列的記憶體數量,讓大型查詢在記憶體較多的佇列中執行。您也可以設定查詢監控規則 (QMR),以限制長時間執行的查詢。如需詳細資訊,請參閱實作手冊 WLM。
注意
我們建議您設定手動WLM查詢佇列,總共有 15 個或更少的查詢插槽。如需詳細資訊,請參閱並行層級。
請注意,對於手動WLM組態,您可以配置給佇列的插槽上限為 50 個。不過,這並不表示在自動WLM組態中,Amazon Redshift 叢集一律會同時執行 50 個查詢。這可能會根據叢集上的記憶體需求或其他類型的資源配置而變更。
切換WLM模式
您可以使用 Amazon Redshift WLM 主控台啟用自動或手動:
選擇 切換WLM模式 。
若要將其設定為自動 WLM,請選擇自動 WLM。使用此選擇時,最多使用八個佇列來管理查詢,而且 Memory (記憶體) 和 Concurrency on main (主要叢集的並行) 欄位都設為 Auto (自動)。此外,查詢的預設優先順序會設定為 Normal 。
-
若要使用 Amazon Redshift 主控台啟用手動組態,請切換到手動 WLM。使用此選擇時,請指定用來管理查詢的佇列,以及 Memory (記憶體) 和 Concurrency on main (主要叢集的並行) 欄位值。使用手動組態時,您最多可以設定八個查詢佇列,並設定每個佇列中可同時執行的查詢數。
修改WLM組態
修改WLM組態的最簡單方法是使用 Amazon Redshift 主控台。您也可以使用 AWS CLI 或 Amazon Redshift API。
當您在自動和手動 之間切換叢集時WLM,您的叢集會進入 pending reboot
狀態。變更要在下次叢集重新啟動後才會生效。
如需修改WLM組態的詳細資訊,請參閱 Amazon Redshift 管理指南中的設定工作負載管理。
從手動遷移WLM至自動 WLM
若要最大化系統輸送量並最有效地使用資源,建議您WLM為佇列設定自動。考慮採取下列方法,設定從手動順利轉換WLM至自動 WLM。
若要從手動遷移WLM至自動WLM並使用查詢優先順序,建議您建立新的參數群組,然後將該參數群組連接至叢集。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的 Amazon Redshift 參數群組。
重要
若要變更參數群組或從手動切換到自動,WLM需要重新開機叢集。如需詳細資訊,請參閱WLM 動態和靜態組態屬性。
讓我們舉一個範例,其中有三個手動WLM佇列。每個ETL工作負載、分析工作負載和資料科學工作負載各一個。ETL 工作負載每 6 小時執行一次,分析工作負載會全天執行一次,而資料科學工作負載可能會隨時飆升。使用手動 時WLM,您可以根據您了解每個工作負載對業務的重要性,指定每個工作負載佇列取得的記憶體和並行。指定記憶體和並行不僅很難釐清,也會導致叢集資源被靜態分割,因而在僅執行一部分工作負載時造成浪費。
您可以使用自動WLM查詢優先順序來指示工作負載的相對優先順序,避免上述問題。對於這個範例,請依照下列步驟進行:
建立新的參數群組並切換至自動WLM模式。
新增三種工作負載的佇列:ETL工作負載、分析工作負載和資料科學工作負載。針對與手動WLM模式搭配使用的每個工作負載使用相同的使用者群組。
將ETL工作負載的優先順序設定為
High
,將分析工作負載設定為Normal
,將資料科學設定為Low
。這些優先順序反映了不同工作負載或使用者群組的業務優先順序。或者,為分析或資料科學佇列啟用並行擴展,以便即使ETL工作負載每 6 小時執行一次,這些佇列中的查詢也能獲得一致的效能。
運用查詢優先順序,當只有分析工作負載在叢集上執行時,它可取得整個系統。這可以產生高輸送量和最佳的系統使用率 不過,當ETL工作負載開始時,它就有方向權,因為其優先順序較高。作為ETL工作負載一部分執行的查詢在入院期間除了優先資源配置之外,還會在入院後獲得優先權。因此,無論系統上執行的其他項目為何,ETL工作負載都會有可預測的執行。高優先順序工作負載能獲得可預測的效能,代價是其他較低優先順序工作負載的執行時間更久,因為它們的查詢要等候較重要的查詢先完成;或者,當它們與較高優先順序的查詢同時執行時,所獲得的資源較少。Amazon Redshift 所用的排程演算法可使較低優先順序的查詢不會面臨資源耗盡,而是持續取得進展,只是速度較慢而已。
注意
自動 中無法使用逾時欄位WLM。反之,請使用QMR規則
query_execution_time
。如需詳細資訊,請參閱WLM 查詢監控規則。QMR 動作 HOP不適用於自動 WLM。請改用
change priority
動作。如需詳細資訊,請參閱WLM 查詢監控規則。叢集使用自動WLM和手動WLM佇列的方式不同,這可能會導致您的組態混淆。例如,您可以在自動WLM佇列中設定優先順序屬性,但無法在手動WLM佇列中設定。因此,請避免在參數群組中混合自動WLM佇列和手動WLM佇列。請改為在遷移至自動 時建立新的參數群組WLM。