一般认为SQL Server包含四种Windows服务:MSSqlServer 是最常用的服务,一般的数据库功能都是由它提供的,例如文件管理、查询处理、数据存储等;DTC是分布式事务协调器,支持跨越两个或多个服务器的更新操作来保证事务的完整性;SQLServerAgent负责SQL Server 自动化工作,如果需要SQL Server 在指定时间执行某一个存储过程,就需要用到这个服务了;Search Service是全文查询服务,负责全文检索方面的工作。


 


一个实例就是一组服务(可能是所有服务,也可能是部分服务)。


 


每个 sql server实例都是一个单独的操作系统进程。每个实例都有可能必须处理来自用户的成千上万个并发请求。SQL Server 2000 实例使用 Microsoft Windows® 线程(有时是纤程)有效地管理这些并发任务。每个 SQL Server 2000 实例始终为系统进程运行多个线程。


 


工作线程数是由服务器配置选项 max worker threads 控制的。max worker threads 的默认设置值 255 (最小值10,最大值32767) 对大多数系统是最优的。然而,取决于系统配置,将 max worker threads 设置为一个稍小的值有时会提高性能。


当从客户端收到一批 Transact-SQL 语句时,如果现有的工作线程空闲,就会分配它来执行这个批处理。如果没有空闲的现有工作线程而且工作线程数少于 max worker threads,那么就会分配一个新的工作线程。如果没有空闲的工作线程而且已经达到 max worker threads,那么新的批处理就要一直等到现有工作线程完成其当前批处理任务而空闲为止。当工作线程数达到 max worker threads 时,SQL Server 显示如下消息:


工作线程限制 255 已经达到。


对所有工作线程进行分配,并不意味着 SQL Server 的性能会降低。通常,新的批处理等待空闲线程只需要很短的时间。分配更多的线程可能会降低性能,因为增加的工作需要在线程之间协调资源。


每个 SQL Server 实例都为用户连接维护一个线程池或纤程池。使用的线程越多,维护所需要的资源越多。该值太大反而会影响性能。


当服务器的内存够多时,配制线程数量 = 最大连接数+5,这样能发挥最大的效率;
否则使用 配制线程数量<最大连接数,启用SQL SERVER的线程池来解决,如果还是数量 = 最大连接数+5,严重的损害服务器的性能。


 


服务器配置 lightweight pooling 选项控制 SQL Server 2000 实例是使用线程还是纤程。默认情况下,lightweight pooling 的设置为 0,在该设置下 SQL Server 实例对每个并发用户命令调度一个线程,直到到达 max worker threads 的值。如果 lightweight pooling 的设置为 1,那么 SQL Server 使用纤程而不是线程。这称为以纤程模式运行。在纤程模式下,SQL Server 实例为每个 CPU 分配一个线程,然后为每个并发用户命令分配一个纤程,最大可以达到 max worker threads 的值。SQL Server 实例在使用线程或纤程时使用相同的算法调度和同步任务。SQL Server 2000 个人版和 SQL Server 2000 Desktop Engine 不支持纤程。


 


 


归纳:


Sql server 对线程的使用也是动态根据需要增减,最大值也设置一个默认值225,对大多数情况下这个值是最优的,但减小该值也可能提高性能,根据实际情况决定。


 


对线程的配置(如下图):


 


对上图的说明〔联机文档〕:


  处理器


指定希望 Microsoft® SQL Server™ 实例使用的处理器。


最大工作线程


指定 SQL Server 进程可用工作线程的最大数目。


在 Windows 上提升 SQL Server 的优先级


指定 SQL Server 实例是否应当比同一计算机上运行的其它进程具有更高的优先级。默认值为 0,其优先级基数为 7。如果将该选项设置为 1,则 SQL Server 在 Microsoft Windows NT® 4.0 或 Windows® 2000 调度程序中以优先级基数 13 运行。建议只在 SQL Server 专用的 Windows NT 4.0 或 Windows 2000 系统上更改该默认值。


[提升sql server 进程的优先级会提高本实例进程的性能,但对其它应用程序和对没有提高优先级的实例的进程产生影响(如果该台服务器上同时运行多个实例的话)]


 


使用 Windows NT 纤程


指定希望 SQL Server 实例使用纤程而非线程。在纤程中,SQL Server 为每个 CPU 分配一个线程,然后为每个并发用户分配一个纤程,直到 max worker threads 值为止。此设置在重新启动服务器后生效。


使用所有可用的处理器


指定希望 SQL Server 将所有可用的处理器都用于并行执行查询。


使用处理器数


指定希望 SQL Server 用于并行执行查询的处理器数。


为允许查询并行执行须满足的最小查询计划阈值


指定 SQL Server 创建和执行并行计划的阈值。只有当同一查询的串行计划的估计执行成本高于此选项的设置值时,SQL Server 才会为该查询创建和执行并行计划。


查看或更改此选项卡上的选项的配置值。如果更改了这些值,单击"运行值"查看更改是否已生效。如果尚未生效,必须重新启动 SQL Server 实例才能使更改生效。


运行值


查看此选项卡上的选项的当前运行值。这些值为只读值。