ALTER WORKLOAD GROUP (Transact-SQL)
更改现有的资源调控器工作负荷组配置,并且可以选择将其分配给资源调控器资源池。
语法
ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
[ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
[ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
[ [ , ] MAX_DOP = value ]
[ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]
参数
group_name | "default"
是现有用户定义工作负荷组或资源调控器默认工作负荷组的名称。注意 在安装 SQL Server 时资源调控器创建“默认”和内部组。
与 ALTER WORKLOAD GROUP 一起使用时,选项 "default" 必须用引号 ("") 引起来或用方括号 ([]) 括起来,以免与系统保留字 DEFAULT 冲突。 有关详细信息,请参阅数据库标识符。
注意 预定义工作负荷组和资源池都使用小写名称,例如“default”。 对于使用区分大小写排序规则的服务器,应当注意这一点。 使用不区分大小写排序规则的服务器(例如 SQL_Latin1_General_CP1_CI_AS)会将“default”和“Default”视为相同。
IMPORTANCE = { LOW | MEDIUM | HIGH }
指定工作负荷组中某个请求的相对重要性。 重要性为以下值之一:LOW
MEDIUM(默认值)
HIGH
注意 在内部,每个重要性设置都存储为用于计算的一个数字。
IMPORTANCE 对资源池而言是局部性的;同一资源池内重要性不同的工作负荷组会相互影响,但不会影响其他资源池中的工作负荷组。
REQUEST_MAX_MEMORY_GRANT_PERCENT =value
指定单个请求可以从池中获取的最大内存量。 此百分比是相对于 MAX_MEMORY_PERCENT 指定的资源池大小而言的。注意 指定的量仅仅指授予查询执行的内存。
value 必须为 0 或正整数。 value 的允许范围为 0 到 100。 value 的默认设置为 25。
注意以下事项:
将 value 设置为 0,将阻止在用户定义的工作负荷组中运行具有 SORT 和 HASH JOIN 操作的查询。
建议您不要将 value 设置为大于 70,这是因为如果正在运行其他并发查询,则服务器可能无法保留足够的空闲内存。 可能最终会导致查询超时错误 8645。
注意 如果查询内存要求超过了此参数指定的限制,服务器会执行以下操作:
对于用户定义的工作负荷组,服务器会尝试降低查询的并行度,直到内存要求降到限制范围以内,或直到并行度等于 1。 如果查询内存要求仍然大于限制值,则会发生错误 8657。
对于内部和默认工作负荷组,服务器会允许查询获取必需的内存。
请注意,如果服务器没有足够的物理内存,则这两种情况都会出现超时错误 8645。
REQUEST_MAX_CPU_TIME_SEC =value
指定请求可以使用的最长 CPU 时间,以秒为单位。 value 必须为 0 或正整数。 value 的默认设置为 0,也就是说无限制。注意 如果超过最长时间,资源调控器并不会阻止继续发出请求。 但会生成一个事件。 有关详细信息,请参阅 CPU Threshold Exceeded 事件类。
REQUEST_MEMORY_GRANT_TIMEOUT_SEC =value
指定查询等待内存授予(工作缓冲区内存)变为可用的最长时间(以秒为单位)。注意 查询并不总是在达到内存授予超时的时候失败。 仅当有太多并发查询运行时,查询才失败。 否则,查询只能获取最小内存授予,从而导致查询性能下降。
value 必须是一个正整数。 value 的默认设置为 0,表示使用基于查询开销的内部计算来确定最长时间。
MAX_DOP =value
指定并行请求的最大并行度 (DOP)。 value 必须为 0 或正整数(1 到 255)。 value 为 0 时, 服务器选择最大并行度。 这是默认值,还是推荐设置。注意 数据库引擎为 MAX_DOP 设置的实际值可能小于指定值。 最终值由公式 min(255, number of CPUs) 确定。
注意 更改 MAX_DOP 可能会对服务器的性能产生不利影响。 如果必须更改 MAX_DOP,我们建议将其设置为小于或等于在单个 NUMA 节点中存在的硬件计划程序的最大数目。 我们建议您不要将 MAX_DOP 设置为大于 8 的值。
按如下方式处理 MAX_DOP:
只要作为查询提示的 MAX_DOP 不超过工作负荷组 MAX_DOP,便遵守作为查询提示的 MAX_DOP。
作为查询提示的 MAX_DOP 始终覆盖 sp_configure 'max degree of parallelism'。
工作负荷组 MAX_DOP 覆盖 sp_configure 'max degree of parallelism'。
如果在编译时将查询标记为串行 (MAX_DOP = 1),则在运行时无法将其重新更改为并行,而不考虑工作负荷组或 sp_configure 设置。
配置 DOP 后,只能在授予内存不足时降低它。 工作负荷组重新配置在授予内存队列中等待时不可见。
GROUP_MAX_REQUESTS =value
指定在工作负荷组中允许执行的同时请求最大数。 value 必须为 0 或正整数。 value 的默认设置为 0,表示允许的请求数不限。 当达到最大并发请求数时,该组中的用户可以登录但置于等待状态,直至并发请求数降到指定值之下。USING { pool_name | "default" }
将工作负荷组与由 pool_name 标识的用户定义资源池关联起来,这实际上是将此工作负荷组放入资源池中。 如果未提供 pool_name 或未使用 USING 参数,则会将此工作负荷组放入预定义的资源调控器默认池中。与 ALTER WORKLOAD GROUP 一起使用时,选项 "default" 必须用引号 ("") 引起来或用方括号 ([]) 括起来,以免与系统保留字 DEFAULT 冲突。 有关详细信息,请参阅数据库标识符。
注意 选项 "default" 区分大小写。
注释
允许对默认组使用 ALTER WORKLOAD GROUP。
对工作负荷组配置的更改直到执行 ALTER RESOURCE GOVERNOR RECONFIGURE 后才会生效。
建议您在熟悉资源调控器状态之后再执行 DDL 语句。 有关详细信息,请参阅资源调控器。
REQUEST_MEMORY_GRANT_PERCENT:在 SQL Server 2005 中,允许索引创建操作使用比最初授予的工作区内存多的工作区内存,以便提高性能。 SQL Server 2012 中的资源调控器支持这种特殊的处理方法。 然而,最初授予及任何其他内存授予都受资源池和工作负荷组设置的限制。
对分区表创建索引
对非对齐的分区表创建索引所占用的内存与涉及的分区数成正比。 如果所需的内存总量超过资源调控器工作负荷组设置为每个查询设定的限制 (REQUEST_MAX_MEMORY_GRANT_PERCENT),则可能无法执行这种索引创建。 由于“默认”工作负荷组允许查询超过每个查询的限制,并在开始时使用所需的最低内存以便与 SQL Server 2005 保持兼容,因此,如果“默认”资源池配置了足够多的内存总量以运行此类查询,则用户或许能够在“默认”工作负荷组中运行相同的索引创建。
权限
需要 CONTROL SERVER 权限。
示例
下面的示例说明了如何将默认组中请求的重要性从 MEDIUM 更改为 LOW。
ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW)
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
下面的示例说明了如何将一个工作负荷组从它所在的池中移到默认池中。
ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
请参阅
参考
CREATE WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL)
CREATE RESOURCE POOL (Transact-SQL)
ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)