共用方式為


將資源類別轉換成工作負載群組

工作負載群組提供一種機制來隔離及包含系統資源。 此外,工作負載群組可讓您為在其中執行的要求設定執行規則。 查詢逾時執行規則可讓失控查詢取消,而不需要使用者介入。 本文說明如何採用現有的資源類別,並建立具有類似設定的工作負載群組。 此外,也會新增選擇性的查詢逾時規則。

瞭解現有的資源類別組態

工作負載群組需要稱為 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

下一步