在具有超过 64 个 CPU 的计算机上运行 SQL Server 的最佳做法

本主题提供在具有超过 64 个 CPU 的计算机上运行 SQL Server 实例时的最佳做法信息。

给硬件线程分配 CPU

不要使用 affinity maskaffinity64 mask 服务器配置选项来将处理器绑定到特定线程。这些选项限制为 64 个 CPU。请改用 ALTER SERVER CONFIGURATION (Transact-SQL)

管理事务日志文件的大小

不要依赖于自动增长来增加事务日志文件的大小。增加事务日志必须是一个串行的过程。扩展日志可能会阻止事务继续写操作,直到完成日志扩展。请通过将文件大小设置为足够支持环境中典型工作负荷的值来预分配日志文件的空间。

设置索引操作的最大并行度

可以通过暂时将数据库的恢复模式设置为大容量日志恢复模式或简单恢复模式,以在具有许多 CPU 的计算机上改进索引操作(如创建或重新创建索引)的性能。这些索引操作可以导致重大的日志活动和日志争用,从而影响 SQL Server 所做的最佳并行度 (DOP) 选择。

此外,请考虑调整这些操作的最大并行度 (MAXDOP) 设置。以下准则基于内部测试,可以作为一般性建议。您应尝试几个不同的 MAXDOP 设置来确定自己环境的最佳设置:

  • 对于完整恢复模式,将 max degree of parallelism 选项设置为 8 或更小。

  • 对于大容量日志恢复模式或简单恢复模式,应考虑将 max degree of parallelism 选项的值设置为大于 8。

  • 对于配置了 NUMA 的服务器,最大并行度不应超过分配给每个 NUMA 节点的 CPU 数目。这是因为查询更可能使用 1 个 NUMA 节点的本地内存,这可以缩短内存访问时间。

  • 对于启用了超线程且在 2009 年或更早制造的服务器,MAXDOP 值不应超过物理处理器的数目。

有关 max degree of parallelism 选项的详细信息,请参阅并行度

设置最大工作线程数

应始终将最大工作线程数设置为超过最大并行度设置。工作线程数必须始终设置为至少是服务器上存在的 CPU 数目的七倍。有关详细信息,请参阅 max worker threads 选项

使用 SQL 跟踪和 SQL Server Profiler

我们建议您不要在生产环境中使用 SQL 跟踪和 SQL Server Profiler。运行这些工具的系统开销也会随着 CPU 的数目的增加而增加。如果您必须在生产环境中使用 SQL 跟踪,请将跟踪事件的数目限制为最少。请在负荷下仔细探查和测试每个跟踪事件,并且避免使用显著影响性能的事件组合。

设置 tempdb 数据文件的数目

通常,tempdb 数据文件的数目应与 CPU 的数目匹配。但是,通过仔细考虑 tempdb 的并发需要,可以减少数据库管理。例如,如果一个系统具有 64 个 CPU 并且通常只有 32 个查询使用 tempdb,则将 tempdb 文件的数目增加到 64 将不会提高性能。有关详细信息,请参阅优化 tempdb 性能

可以使用超过 64 个 CPU 的 SQL Server 组件

下表列出了 SQL Server 组件,并指示它们是否可以使用超过 64 个 CPU。

进程名称

可执行程序

是否可使用超过 64 个 CPU

SQL Server 数据库引擎

Sqlserver.exe

Reporting Services

Rs.exe

Analysis Services

As.exe

Integration Services

Is.exe

Service Broker

Sb.exe

全文搜索

Fts.exe

SQL Server 代理

Sqlagent.exe

SQL Server Management Studio

Ssms.exe

SQL Server 安装程序

Setup.exe