ALTER WORKLOAD GROUP (Transact-SQL)

更改现有资源调控器工作负荷组配置,并且还可以将其分配给资源调控器的资源池。

主题链接图标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 2008 时创建的资源调控器默认工作负荷组的名称。

    与 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
    指定查询在失败前可以等待资源变为可用状态的最长时间(以秒为单位)。value 必须为零或正整数。value 的默认设置为 0,表示使用基于查询开销的内部计算来确定最长时间。

    注意注意

    如果超过最长时间,资源调控器并不会阻止继续发出请求。但会生成一个事件。有关详细信息,请参阅 CPU Threshold Exceeded 事件类

  • REQUEST_MEMORY_GRANT_TIMEOUT_SEC =value
    指定查询等待内存授予(工作缓冲区内存)变为可用的最长时间(以秒为单位)。

    注意注意

    查询并不总是在达到内存授予超时的时候失败。仅当有太多并发查询运行时,查询才失败。否则,查询只能获取最小内存授予,从而导致查询性能下降。

    value 必须是一个正整数。value 的默认设置为 0,表示使用基于查询开销的内部计算来确定最长时间。

  • MAX_DOP =value
    指定并行请求的最大并行度 (DOP)。value 必须为 0 或正整数。value 的允许范围为 0 到 64。value 的默认设置为 0,即服务器选择最大并行度。这是默认值,还是推荐设置。当 value 等于 0 时,服务器使用的最大值是 64。按如下方式处理 MAX_DOP:

    • 只要作为查询提示的 MAXDOP 未超过工作负荷组 MAX_DOP,便遵守作为查询提示的 MAXDOP。

    • 作为查询提示的 MAXDOP 始终会覆盖 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 2008 中的资源调控器支持这种特殊的处理方法。然而,最初授予及任何其他内存授予都受资源池和工作负荷组设置的限制。

对分区表创建索引

对非对齐的分区表创建索引所占用的内存与涉及的分区数成正比。如果所需的内存总量超过资源调控器工作负荷组设置为每个查询设定的限制 (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

更改历史记录

更新的内容

向 REQUEST_MAX_MEMORY_GRANT_PERCENT 参数的说明添加了“注意以下事项”信息。