ALTER SERVER CONFIGURATION (Transact-SQL)

在 SQL Server 2008 R2 中使硬件线程与 CPU 相关联。

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

语法

ALTER SERVER CONFIGURATION
SET PROCESS AFFINITY 
{   CPU = { AUTO | <CPU_range_spec> } 
  | NUMANODE = <NUMA_node_range_spec>
}
[ ; ]

<CPU_range_spec> ::= 
{ CPU_ID | CPU_ID TO CPU_ID } [,...n ]

<NUMA_node_range_spec> ::= 
{ NUMA_Node_ID | NUMA_Node_ID TO NUMA_Node_ID } [,...n ]

参数

  • PROCESS AFFINITY
    使硬件线程与 CPU 相关联。

  • CPU = { AUTO | <CPU_range_spec> }
    将 SQL Server 工作线程分发到指定范围内的各 CPU。超出了指定范围的 CPU 将不会分配有线程。

    • AUTO
      指定没有任何线程分配给 CPU。操作系统可以基于服务器工作负荷在 CPU 之间自由地移动线程。这是默认值,还是推荐设置。

    • <CPU_range_spec> ::=
      指定要给线程分配的 CPU 或 CPU 范围。

    • { CPU_ID | CPU_ID TO CPU_ID } [ ,...n ]
      一个或多个 CPU 的列表。CPU ID 是以 0 开头的 integer 值。
  • NUMANODE = <NUMA_node_range_spec>
    将线程分配给属于指定 NUMA 节点或节点范围的所有 CPU。

    • <NUMA_node_range_spec> ::=
      指定 NUMA 节点或 NUMA 节点的范围。

    • { NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID } [ ,...n ]
      一个或多个 NUMA 节点的列表。NUMA 节点是以 0 开头的 integer 值。

注释

此语句不支持 DDL 触发器。无需重新启动 SQL Server。

权限

需要 ALTER SETTINGS 权限。

示例

在下面的示例中,服务器包含 256 个 CPU,这些 CPU 分为四组,每组各有 16 个 NUMA 节点。线程未分配给任何 NUMA 节点或 CPU。

  • 组 0: NUMA 节点 0 到 3,CPU 0 到 63

  • 组 1: NUMA 节点 4 到 7,CPU 64 到 127

  • 组 2: NUMA 节点 8 到 12,CPU 128 到 191

  • 组 3: NUMA 节点 13 到 16,CPU 192 到 255

A.设置与 0 和 2 组中所有 CPU 的关联

下面的示例设置与 0 和 2 组中所有 CPU 的关联。

ALTER SERVER CONFIGURATION 
SET PROCESS AFFINITY CPU=0 TO 63, 128 TO 191;

B. 设置与 NUMA 节点 0 和 7 中所有 CPU 的关联

下面的示例设置仅与节点 0 和 7 的 CPU 关联。

ALTER SERVER CONFIGURATION 
SET PROCESS AFFINITY NUMANODE=0, 7;

C. 设置与 CPU 60 到 200 的关联

下面的示例设置与 CPU 60 到 200 的关联。

ALTER SERVER CONFIGURATION 
SET PROCESS AFFINITY CPU=60 TO 200;

D. 设置与具有两个 CPU 的系统上的 CPU 0 的关联

下面的示例显示如何设置与具有两个 CPU 的计算机上的 CPU=0 的关联。在执行以下语句前,内部关联位掩码为 00。

ALTER SERVER CONFIGURATION 
SET PROCESS AFFINITY CPU=0;

E. 设置与 AUTO 的关联

下面的示例演示如何设置关联 AUTO。

ALTER SERVER CONFIGURATION 
SET PROCESS AFFINITY CPU=AUTO;