CREATE RESOURCE POOL (Transact-SQL)

创建资源调控器资源池。 在 Microsoft SQL Server 的每个版本中不提供资源调控器。 有关 SQL Server 的每个版本支持的功能列表,请参阅 SQL Server 2012 各个版本支持的功能

主题链接图标 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 ]) 
]
[;]

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

  • AFFINITY {SCHEDULER = AUTO | (Scheduler_range_spec) | NUMANODE = (<NUMA_node_range_spec>)}
    将资源池附加到特定的计划程序。 默认值为 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。

注释

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。

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

注释

数据库管理员可以使用资源调控器功能在多个资源池之间分发服务器资源,最多可为 64 个池。

请参阅

参考

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)