max worker threads 选项

更新日期: 2005 年 12 月 5 日

使用 max worker threads 选项可以配置 Microsoft SQL Server 进程可使用的工作线程数。SQL Server 使用 Microsoft Windows 2000 和 Windows Server 2003 操作系统的本机线程服务,从而使一个或多个线程支持 SQL Server 同时支持的每一个网络,另一个线程处理数据库检查点,而线程池则处理所有用户。

max worker threads 选项的用途

当服务器上连接有大量客户端时,线程池有助于优化性能。一般情况下,为每一个客户端连接创建一个独立的操作系统线程可占用较少的系统资源。但是,当服务器上具有数以百计的连接时,每个连接使用一个线程就可能占用大量的系统资源。max worker threads 选项使 SQL Server 可以为大量的客户端连接创建一个工作线程池,这将提高性能。

计算最大工作线程数

如果 max worker threads 的默认值是 0,则允许 SQL Server 在启动时自动配置工作线程数。对于大多数系统而言,该设置为最佳设置;然而,根据您的系统配置将 max worker threads 设置为特定值有时会提高性能。

下表显示了针对各种 CPU 与 SQL Server 版本的组合自动配置的最大工作线程数。

CPU 数 32 位计算机 64 位计算机

<= 4 个处理器

256

512

8 个处理器

288

576

16 个处理器

352

704

32 个处理器

480

960

ms187024.note(zh-cn,SQL.90).gif注意:
我们建议将 1024 作为 32 位 SQL Server 的最大线程数,将 2048 作为 64 位 SQL Server 的最大线程数。

当实际的用户连接数量少于 max worker threads 的设置值时,每一个线程处理一个连接。但是,如果实际的连接数量超过 max worker threads 的设置值时,SQL Server 将建立工作线程池以便下一个可用的工作线程可以处理请求。

从 SQL Server 2000 升级

在 SQL Server 2000 中,max worker threads 的默认设置为 255。将 SQL Server 2000 数据库引擎实例升级到 SQL Server 2005 后会保留 max worker threads 的配置值。升级时,我们建议将 SQL Server 2005 的 max worker threads 值更改为 0,以允许数据库引擎计算最佳线程数。

设置最大工作线程数

max worker threads 选项是一个高级选项。如果使用 sp_configure 系统存储过程来更改该设置,则只有在 show advanced options 设置为 1 时才能更改 max worker threads。新设置在重新启动系统后生效。

ms187024.note(zh-cn,SQL.90).gif注意:
如果所有工作线程随长时间运行的查询而处于活动状态,SQL Server 可能显示停止响应,直到一个工作线程完成并变成可用。虽然这不是缺点,但有时用户可能并不希望如此。如果进程显示为停止响应并且不再处理新查询,则将使用专用管理员连接 (DAC) 连接到 SQL Server,并关闭此进程。为避免此种情况发生,请增大最大工作线程数。

请参阅

任务

如何将 SQL Server Management Studio 与专用管理员连接配合使用

概念

设置服务器配置选项
使用专用管理员连接

其他资源

RECONFIGURE (Transact-SQL)
sp_configure (Transact-SQL)

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

新增内容:
  • 添加了“从 SQL Server 2000 升级”部分。