线程和纤程的执行

Microsoft Windows 使用从 1 到 31 的数值优先级系统计划线程的执行优先级。零是保留值,专供操作系统使用。当有多个线程等待执行时,Windows 将分派优先级最高的线程。

默认情况下,每个 SQL Server 实例的优先级都是 7,这个优先级称为正常优先级。此默认值为 SQL Server 线程提供了足够高的优先级以获得足够的 CPU 资源,而不会对其他应用程序造成负面影响。

priority boost 配置选项可用于将 SQL Server 实例的线程优先级提高到 13,此优先级称为高优先级。此设置为 SQL Server 线程提供了一个比其他大多数应用程序高的优先级。因此,通常当 SQL Server 线程准备好运行时便获得分派,而不会被其他应用程序的线程抢先。这可以在服务器只运行 SQL Server 实例而未运行其他应用程序时提高性能。但是,如果 SQL Server 中发生占用大量内存的操作,其他应用程序便不可能有足够高的优先级而抢先于 SQL Server 线程。

如果在一台计算机上运行多个 SQL Server 实例,而只为其中的某些实例打开了 priority boost 选项,那么任何以正常优先级运行的实例的性能都将受到负面影响。而且,如果打开了 priority boost 选项,服务器上的其他应用程序和组件的性能将会降低。因此,必须在严格控制下使用此选项。