CREATE RESOURCE POOL (Transact-SQL)

在 SQL Server 中创建资源调控器资源池。 资源池表示数据库引擎实例的部分物理资源(内存、CPU 和 IO)。 数据库管理员可以使用资源调控器在多个资源池之间分发服务器资源,最多可为 64 个池。 资源调控器并非在每个 SQL Server 版本中都提供。 有关 SQL Server 的每个版本支持的功能列表,请参阅 SQL Server 2014 各个版本支持的功能

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

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

语法

CREATE RESOURCE POOL pool_name
[ 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
    资源池的用户定义名称。 pool_name 由字母数字组成,最多可包含 128 个字符,它在 SQL Server 实例中必须是唯一的,并且必须符合标识符规则。

  • 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 带宽硬性上限。 将 CPU 最大带宽级别限制为与指定值相同。 value 为整数,默认设置为 100。 value 的允许范围为 1 到 100。

  • 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 NUMANODE = ( <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 表示池没有最小值阈值。 默认值为 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)。

注释

MIN_IOPS_PER_VOLUME 和 MAX_IOPS_PER_VOLUME 指定每秒的最小和最大的读取或写入数。 这些读取或写入可以是任何大小,并且不指示最小或最大流量。

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

CAP_CPU_PERCENT 不同于 MAX_CPU_PERCENT,这是因为与池关联的工作负荷可以使用 MAX_CPU_PERCENT 值之上的 CPU 容量(如果可用),但不能超过 CAP_CPU_PERCENT 的值。

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

权限

需要具有 CONTROL SERVER 权限。

示例

下面的示例演示如何创建名为 bigPool 的资源池。 此池使用默认的资源调控器设置。

CREATE RESOURCE POOL bigPool;
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

以下示例将 CAP_CPU_PERCENT 的硬性上限设置为 30%,并将 AFFINITY SCHEDULER 的范围设置为 0 到 63、128 到 191。

适用于:SQL Server 2012 到 SQL Server 2014。

CREATE RESOURCE POOL PoolAdmin
WITH (
     MIN_CPU_PERCENT = 10,
     MAX_CPU_PERCENT = 20,
     CAP_CPU_PERCENT = 30,
     AFFINITY SCHEDULER = (0 TO 63, 128 TO 191),
     MIN_MEMORY_PERCENT = 5,
     MAX_MEMORY_PERCENT = 15
      );

以下示例设置将 MIN_IOPS_PER_VOLUME 设置为 <某个值>,并将 MAX_IOPS_PER_VOLUME 设置为 <某个值>。 这些值控制可用于资源池的物理 I/O 读取和写入操作。

适用于:SQL Server 2014 到 SQL Server 2014。

CREATE RESOURCE POOL PoolAdmin
WITH (
    MIN_IOPS_PER_VOLUME = 20,
    MAX_IOPS_PER_VOLUME = 100
      );

请参阅

参考

ALTER 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)

概念

资源调控器资源池

创建资源池