通过


你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将资源类转换为工作负荷组

工作负荷组提供隔离和管理系统资源的机制。 此外,工作负荷组允许为在其中运行的请求设置执行规则。 查询超时执行规则允许过度运行的查询在不需要用户干预的情况下被取消。 本文介绍如何采用现有资源类并创建具有类似配置的工作负荷组。 此外,还添加了可选的查询超时规则。

注释

有关同时使用工作负荷组和资源类的指导,请参阅工作负荷分类概念文档中的“混合资源类分配与分类器”部分。

了解现有资源类配置

工作负荷组需要一个调用 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 作为示例的基础,下面的代码将 10% 的系统资源专用于MIN_PERCENTAGE_RESOURCE,并保证能够始终有一个查询可以运行在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仅允许根据登录名将资源映射到请求。 分类器提供除登录以外的其他选项,例如:- 标签 - 会话 - 时间。下例将来自 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

后续步骤