ALTER RESOURCE POOL (Transact-SQL)

更改 SQL Server 中现有资源调控器的资源池配置。

适用范围:SQL Server(SQL Server 2008 到当前版本)。

主题链接图标 Transact-SQL 语法约定

语法

ALTER RESOURCE POOL { pool_name | "default" }
[WITH
    ( [ MIN_CPU_PERCENT = value ]
    [ [ , ] MAX_CPU_PERCENT = value ] 
    [ [ , ] CAP_CPU_PERCENT = value ] 
    [ [ , ] AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = ( <NUMA_node_range_spec> )}] 
    [ [ , ] MIN_MEMORY_PERCENT = value ]
    [ [ , ] MAX_MEMORY_PERCENT = value ] 
    [ [ , ] MIN_IOPS_PER_VOLUME = value ]
    [ [ , ] MAX_IOPS_PER_VOLUME = value ]
)
] 
[;]

<scheduler_range_spec> ::=
{SCHED_ID | SCHED_ID TO SCHED_ID}[,…n]

<NUMA_node_range_spec> ::=
{NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID}[,…n]

参数

  • { pool_name | "default" }
    是现有用户定义资源池或安装 SQL Server 时创建的默认资源池的名称。

    与 ALTER RESOURCE POOL 一起使用时,"default" 必须用引号 ("") 引起来或用方括号 ([]) 括起来,以免与系统保留字 DEFAULT 冲突。 有关详细信息,请参阅数据库标识符

    备注

    预定义工作负荷组和资源池都使用小写名称,例如“default”。对于使用区分大小写排序规则的服务器,应当注意这一点。使用不区分大小写排序规则的服务器(例如 SQL_Latin1_General_CP1_CI_AS)会将“default”和“Default”视为相同。

  • MIN_CPU_PERCENT =value
    指定在出现 CPU 争用时资源池中的所有请求保证能接收的平均 CPU 带宽。 value 为整数,默认设置为 0。 value 的允许范围为 0 到 100。

  • MAX_CPU_PERCENT =value
    指定在存在 CPU 争用时资源池中的所有请求将接收的最大平均 CPU 带宽。 value 为整数,默认设置为 100。 value 的允许范围为 1 到 100。

  • CAP_CPU_PERCENT =value

    适用范围:SQL Server 2012 到 SQL Server 2014。

    针对资源池中的请求指定最大目标 CPU 容量。 value 为整数,默认设置为 100。 value 的允许范围为 1 到 100。

    备注

    由于 CPU 调控具有的统计特性,您可能会发现超过 CAP_CPU_PERCENT 中指定的值的临时峰值。

  • AFFINITY {SCHEDULER = AUTO | (Scheduler_range_spec) | NUMANODE = (NUMA_node_range_spec)}

    适用范围:SQL Server 2012 到 SQL Server 2014。

    将资源池附加到特定的计划程序。 默认值为 AUTO。

    AFFINITY SCHEDULER = (Scheduler_range_spec) 将资源池映射到由给定 ID 标识的 SQL Server 计划。 这些 ID 将映射 sys.dm_os_schedulers (Transact-SQL) 的 scheduler_id 列中的值。

    当您使用 AFFINITY NAMANODE = (NUMA_node_range_spec) 时,资源池关联到映射到物理 CPU 的 SQL Server 计划程序,而这些 CPU 与给定的一个 NUMA 节点或一系列节点相对应。 您可以使用下面的 Transact-SQL 查询发现物理 NUMA 配置与 SQL Server 计划程序 ID 之间的映射。

    SELECT osn.memory_node_id AS [numa_node_id], sc.cpu_id, sc.scheduler_id
    FROM sys.dm_os_nodes AS osn
    INNER JOIN sys.dm_os_schedulers AS sc ON osn.node_id = sc.parent_node_id AND sc.scheduler_id < 1048576;
    
  • MIN_MEMORY_PERCENT =value
    指定为此资源池保留的、不能与其他资源池共享的最小内存量。 value 为整数,默认设置为 0。 value 的允许范围为 0 到 100。

  • MAX_MEMORY_PERCENT =value
    指定此资源池中的请求可使用的总服务器内存量。 value 为整数,默认设置为 100。 value 的允许范围为 1 到 100。

  • MIN_IOPS_PER_VOLUME =value

    适用范围:SQL Server 2014 到 SQL Server 2014。

    指定为资源池保留的每个磁盘卷每秒的最小 I/O 操作数 (IOPS)。 value 的允许范围为 0 到 2^31-1 (2,147,483,647)。 指定 0 表示池没有最小值阈值。

  • MAX_IOPS_PER_VOLUME =value

    适用范围:SQL Server 2014 到 SQL Server 2014。

    指定可用于该资源池的每个磁盘卷每秒的最大 I/O 操作数 (IOPS)。 value 的允许范围为 0 到 2^31-1 (2,147,483,647)。 指定 0 表示为池设置无限制的阈值。 默认值为 0。

    如果池的 MAX_IOPS_PER_VOLUME 设置为 0,则该池根本不受管控,可以采用系统中的所有 IOPS,即使其他池设置了 MIN_IOPS_PER_VOLUME 也是如此。 对于这种情况,我们建议您在希望管控此池的 IO 时将此池的 MAX_IOPS_PER_VOLUME 值设置为较高的数字(例如,最大值 2^31-1)。

注释

MAX_CPU_PERCENT 和 MAX_MEMORY_PERCENT 必须分别大于或等于 MIN_CPU_PERCENT 和 MIN_MEMORY_PERCENT。

MAX_CPU_PERCENT 可使用高于 MAX_CPU_PERCENT 值的 CPU 容量(如果可用)。 尽管可能存在高于 CAP_CPU_PERCENT 的定期峰值,但工作负荷在较长时段不应超过 CAP_CPU_PERCENT,即使额外 CPU 容量可用也是如此。

每个关联组件(计划程序或 NUMA 节点)的总 CPU 百分比不应超过 100%。

建议您在熟悉资源调控器状态之后再执行 DDL 语句。 有关详细信息,请参阅资源调控器

权限

需要 CONTROL SERVER 权限。

示例

下面的示例保留了 default 池的所有默认资源池设置,只有 MAX_CPU_PERCENT 除外,该设置更改为 25。

ALTER RESOURCE POOL "default"
WITH
     ( MAX_CPU_PERCENT = 25);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

在以下示例中,CAP_CPU_PERCENT 将硬性上限设置为 80%,并且 AFFINITY SCHEDULER 设置为单个值 8 以及 12 到 16 这个范围。

适用范围:SQL Server 2012 到 SQL Server 2014。

ALTER RESOURCE POOL Pool25
WITH( 
     MIN_CPU_PERCENT = 5,
     MAX_CPU_PERCENT = 10,     
     CAP_CPU_PERCENT = 80,
     AFFINITY SCHEDULER = (8, 12 TO 16), 
     MIN_MEMORY_PERCENT = 5,
     MAX_MEMORY_PERCENT = 15
);

GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

请参阅

参考

CREATE RESOURCE POOL (Transact-SQL)

DROP RESOURCE POOL (Transact-SQL)

CREATE WORKLOAD GROUP (Transact-SQL)

ALTER WORKLOAD GROUP (Transact-SQL)

DROP WORKLOAD GROUP (Transact-SQL)

ALTER RESOURCE GOVERNOR (Transact-SQL)

概念

资源调控器