Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
本文介绍如何使用工作负荷组来配置工作负荷隔离、包含资源,以及应用运行时规则来执行查询。
工作负载组
工作负荷组是一组请求的容器,是在系统上配置工作负荷管理(包括工作负荷隔离)的基础。 工作负荷组是使用 CREATE WORKLOAD GROUP 语法创建的。 一个简单的工作负荷管理配置可以管理数据负荷和用户查询。 例如,名为 wgDataLoads 的工作负荷组将定义要加载到系统中的数据的工作负荷方面。 此外,名为 wgUserQueries 的工作负荷组将定义运行查询的用户从系统读取数据的工作负荷方面。
以下部分将重点介绍工作负荷组如何提供定义隔离、包含、请求资源定义以及遵守执行规则的功能。
资源治理
工作负荷组控制内存和 CPU 资源。 磁盘和网络 IO 以及 tempdb 不受控制。 内存和 CPU 的资源治理如下所示:
内存管理在请求级别进行,并在整个请求期间保持。 有关如何配置每个请求的内存量的详细信息,请参阅 每个请求 的资源定义。 工作负荷组的 MIN_PERCENTAGE_RESOURCE 参数专门将内存专用于该工作负荷组。 工作负荷组的CAP_PERCENTAGE_RESOURCE参数是对工作负荷组可以使用的内存的硬限制。
CPU 资源在工作负荷组级别进行控制,并由工作负荷组内的所有请求共享。 与在执行期间专用于请求的内存相比,CPU 资源是流畅的。 给定 CPU 是一种流畅的资源,所有工作负荷组都可以使用未使用的 CPU 资源。 这意味着 CPU 利用率可能超过工作负荷组的CAP_PERCENTAGE_RESOURCE参数。 这也意味着工作负载组的 MIN_PERCENTAGE_RESOURCE 参数不是像内存那样的硬性保留。 当 CPU 资源处于争用状态时,利用率将与工作负荷组的CAP_PERCENTAGE_RESOURCE定义保持一致。
工作负荷隔离
工作负荷隔离意味着专门为工作负荷组保留资源。 通过在 CREATE WORKLOAD GROUP 语法中将 MIN_PERCENTAGE_RESOURCE 参数配置为大于零来实现工作负荷隔离。 对于需要遵循严格 SLA 的持续执行工作负荷,隔离可确保资源始终可用于工作负荷组。
配置工作负载隔离会隐式定义有保证的并发度。 例如,将 MIN_PERCENTAGE_RESOURCE 设为 30%、REQUEST_MIN_RESOURCE_GRANT_PERCENT 设为 2% 的工作负载组可保证 15 并发。 并发级别得以保证,因为在工作负载组中始终保留有 15-2% 个资源槽(不论 REQUEST_MAX_RESOURCE_GRANT_PERCENT 的配置方式如何)。 如果REQUEST_MAX_RESOURCE_GRANT_PERCENT大于REQUEST_MIN_RESOURCE_GRANT_PERCENT,并且CAP_PERCENTAGE_RESOURCE大于MIN_PERCENTAGE_RESOURCE,可以为每个请求添加其他资源(基于资源可用性)。 如果 REQUEST_MAX_RESOURCE_GRANT_PERCENT 和 REQUEST_MIN_RESOURCE_GRANT_PERCENT 相等且 CAP_PERCENTAGE_RESOURCE 大于 MIN_PERCENTAGE_RESOURCE,则可以实现更大的并发性。 假设使用以下方法来确定有保证的并发度:
[有保证的并发度] = [MIN_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]
注释
min_percentage_resource 有特定的服务级别最小值。 有关详细信息,请参阅 “有效值 ”以获取更多详细信息。
如果没有工作负荷隔离,请求在 资源共享池 中运行。 无法保证访问共享池中的资源,并按 重要性 分配。
应谨慎配置工作负荷隔离,因为即使工作负荷组中没有活动请求,资源也会分配给工作负荷组。 过度配置隔离可能会导致整体系统利用率下降。
用户应避免采用这样一种工作负载管理解决方案:该方案配置了 100 个% 工作负载隔离。当跨所有工作负载组配置的 min_percentage_resource 总和等于 100%时,即实现 100 个% 隔离。 这种类型的配置过于严格和僵化,为意外分类的资源请求留出很少的空间。 有一项预配允许通过未配置隔离的工作负载组执行一个请求。 分配给此请求的资源在系统 DMV 中显示为零,并从系统保留的资源借用 smallrc 级别的资源授予。
注释
为了确保最佳资源利用率,请考虑实施一个利用某种隔离来确保符合 SLA,以与基于工作负载重要性访问的共享资源混合的工作负载管理解决方案。
工作负荷控制
工作负载限制是指限制工作负载组可以消耗的资源量。 通过在 CREATE WORKLOAD GROUP 语法中将 CAP_PERCENTAGE_RESOURCE 参数设置为小于 100,可以实现工作负载限制。 假设用户需要对系统具有读取访问权限,以便他们可以通过临时查询运行假设分析。 这些类型的请求可能会对系统上运行的其他工作负荷产生负面影响。 配置限制措施可确保资源使用量受限。
配置工作负荷限制隐式定义了最大的并发级别。 将 CAP_PERCENTAGE_RESOURCE 参数设置为 60%,并将 REQUEST_MIN_RESOURCE_GRANT_PERCENT 参数设置为 1%,因此该工作组允许的最大并发级别为 60。 使用以下方法来确定最大并发量:
[最大并发度] = [CAP_PERCENTAGE_RESOURCE] / [REQUEST_MIN_RESOURCE_GRANT_PERCENT]
注释
创建 MIN_PERCENTAGE_RESOURCE 级别大于零的工作负载组时,该工作负载组的有效 CAP_PERCENTAGE_RESOURCE 不会达到 100%。 请参阅 sys.dm_workload_management_workload_groups_stats 了解有效的运行时值。
每个请求的资源量定义
工作负荷组提供了一种机制,允许通过 CREATE WORKLOAD GROUP 语法中的 REQUEST_MIN_RESOURCE_GRANT_PERCENT 和 REQUEST_MAX_RESOURCE_GRANT_PERCENT 参数,明确为每个请求分配的最小和最大资源量。 在这种情况下,资源是内存。 资源治理部分介绍了 CPU 资源 治理 。
注释
REQUEST_MAX_RESOURCE_GRANT_PERCENT是一个可选参数,它默认为为REQUEST_MIN_RESOURCE_GRANT_PERCENT指定的值。
与选择资源类一样,配置REQUEST_MIN_RESOURCE_GRANT_PERCENT设置请求使用的资源的值。 在请求开始执行之前,保证为该请求分配设置值所指定的资源量。 对于从资源类迁移到工作负载组的客户,首先请考虑遵循操作指南文章从资源类映射到工作负载组。
将REQUEST_MAX_RESOURCE_GRANT_PERCENT配置为大于REQUEST_MIN_RESOURCE_GRANT_PERCENT的值允许系统为每个请求分配更多资源。 在计划请求时,系统会根据共享池中的资源可用性和系统上的当前负载来确定对请求的实际资源分配,即REQUEST_MIN_RESOURCE_GRANT_PERCENT和REQUEST_MAX_RESOURCE_GRANT_PERCENT之间。 计划查询时,资源必须存在于资源的 共享池 中。
注释
REQUEST_MIN_RESOURCE_GRANT_PERCENT 和 REQUEST_MAX_RESOURCE_GRANT_PERCENT 的有效值取决于有效的 MIN_PERCENTAGE_RESOURCE 和 CAP_PERCENTAGE_RESOURCE 值。 请参阅 sys.dm_workload_management_workload_groups_stats 了解有效的运行时值。
执行规则
在临时报告系统上,客户可能会意外执行严重影响他人工作效率的失控查询。 系统管理员被迫花时间终止失控的查询,以释放出更多的系统资源。 工作负荷组提供配置查询执行超时规则的功能,以取消超过指定值的查询。 通过在 CREATE WORKLOAD GROUP 语法中设置QUERY_EXECUTION_TIMEOUT_SEC参数来配置规则。
共享池资源
共享池资源是未进行隔离配置的资源。 MIN_PERCENTAGE_RESOURCE 设置为零的工作负荷组将利用共享池中的资源来执行请求。 CAP_PERCENTAGE_RESOURCE 大于 MIN_PERCENTAGE_RESOURCE 的工作负载组也使用共享资源。 共享池中可用的资源量按如下方式计算。
[共享池] = 100 - [所有工作负载组的 MIN_PERCENTAGE_RESOURCE 之和]
对共享池中的资源的访问权限是按 重要性 分配的。 重要性级别相同的请求将按先入/先出的原则访问共享池资源。