將資源類別轉換成工作負載群組
工作負載群組提供一種機制來隔離及包含系統資源。 此外,工作負載群組可讓您為在其中執行的要求設定執行規則。 查詢逾時執行規則可讓失控查詢取消,而不需要使用者介入。 本文說明如何採用現有的資源類別,並建立具有類似設定的工作負載群組。 此外,也會新增選擇性的查詢逾時規則。
瞭解現有的資源類別組態
工作負載群組需要稱為 REQUEST_MIN_RESOURCE_GRANT_PERCENT
的參數,指定每個要求配置的整體系統資源百分比。 資源配置是透過配置並行位置來為 資源類別 完成。 若要判斷要針對 REQUEST_MIN_RESOURCE_GRANT_PERCENT
指定的值,請使用 sys.dm_workload_management_workload_groups_stats DMV。 例如,下列查詢會傳回可用於 REQUEST_MIN_RESOURCE_GRANT_PERCENT
參數的值,以建立類似 staticrc40 的工作負載群組。
SELECT Request_min_resource_grant_percent = Effective_request_min_resource_grant_percent
FROM sys.dm_workload_management_workload_groups_stats
WHERE name = 'staticrc40'
注意
工作負載群組會根據整體系統資源的百分比運作。
因為工作負載群組是根據整體系統資源的百分比而運作,所以當您進行擴大或縮小時,配置至靜態資源類別,且相對於整體系統資源的資源百分比會變更。 舉例來說,DW1000c 中的 staticrc40 配置了 19.2% 的整體系統資源。 在 DW2000c 中,會配置 9.6%。 如果您想要相應增加並行存取,而不是為每個要求配置更多資源,此模型很類似。
建立工作負載群組
透過已知的 REQUEST_MIN_RESOURCE_GRANT_PERCENT
,您可以使用 CREATE WORKLOAD GROUP 語法來建立工作負載群組。 您可以選擇性地指定 MIN_PERCENTAGE_RESOURCE
大於零的 ,以隔離工作負載群組的資源。 此外,您可以選擇性地指定 CAP_PERCENTAGE_RESOURCE
小於 100,以限制工作負載群組可取用的資源數量。
使用 mediumrc 作為範例的基礎,下列程式代碼 MIN_PERCENTAGE_RESOURCE
會將 設定為 10% 的系統資源 wgDataLoads
,並保證一個查詢能夠一直執行。 此外, CAP_PERCENTAGE_RESOURCE
設定為 40%,並將此工作負載群組限製為四個並行要求。 藉由將 QUERY_EXECUTION_TIMEOUT_SEC
參數設定為 3600,任何執行超過 1 小時的查詢都會自動取消。
CREATE WORKLOAD GROUP wgDataLoads WITH
( REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10
,MIN_PERCENTAGE_RESOURCE = 10
,CAP_PERCENTAGE_RESOURCE = 40
,QUERY_EXECUTION_TIMEOUT_SEC = 3600)
建立分類器
先前,查詢與資源類別的對應已完成 sp_addrolemember。 若要達到相同的功能,並將要求對應至工作負載群組,請使用 CREATE WORKLOAD CLASSIFIER 語法。 使用 sp_addrolemember只允許您根據登入將資源對應至要求。 分類器除了登入,還提供其他選項,例如: - label - session - time 下列範例會指派來自登入的 AdfLogin
查詢,該登入中也會 將 OPTION LABEL 設定為 factloads
上述建立的工作負載群組 wgDataLoads
。
CREATE WORKLOAD CLASSIFIER wcDataLoads WITH
( WORKLOAD_GROUP = 'wgDataLoads'
,MEMBERNAME = 'AdfLogin'
,WLM_LABEL = 'factloads')
使用範例查詢進行測試
以下是範例查詢和 DMV 查詢,以確保已正確設定工作負載群組和分類器。
SELECT SUSER_SNAME() --should be 'AdfLogin'
--change to a valid table AdfLogin has access to
SELECT TOP 10 *
FROM nation
OPTION (label='factloads')
SELECT request_id, [label], classifier_name, group_name, command
FROM sys.dm_pdw_exec_requests
WHERE [label] = 'factloads'
ORDER BY submit_time DESC