ALTER SERVER CONFIGURATION (Transact-SQL)
在 SQL Server 2008 R2 中使硬件线程与 CPU 相关联。
语法
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;