Параметр max worker threads

С помощью параметра 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 может иногда повысить производительность.

В следующей таблице показано автоматически настраиваемое максимальное число потоков исполнителей для различных сочетаний процессоров и версий SQL Server.

Число ЦП

32-разрядный компьютер

64-разрядный компьютер

<= 4 процессорам

256

512

8 процессоров

288

576

16 процессоров

352

704

32 процессора

480

960

ПредупреждениеВнимание!

Рекомендуется 1024 в качестве максимального значения для 32-разрядной версии SQL Server.

Если реальное количество запросов меньше значения, заданного параметром max worker threads, каждый запрос обрабатывается одним потоком. Однако если реальное количество потоков превышает число, заданное параметром max worker threads, SQL Server использует пул рабочих потоков, так что следующий доступный рабочий поток сможет обработать запрос.

Обновление SQL Server 2000

Значение параметра max worker threads в SQL Server 2000 было 255. При обновлении экземпляра компонента SQL Server 2000 Database Engine значение параметра конфигурации max worker threads сохранится. Перед обновлением экземпляра рекомендуется установить для параметра max worker threads значение 0, чтобы компонент Database Engine рассчитал оптимальное количество потоков.

Установка максимального числа потоков исполнителей

Параметр max worker threads является дополнительным. Если для изменения настроек используется системная хранимая процедура sp_configure, то изменить значение параметра max worker threads можно только при условии, что параметр show advanced options равен 1. Для применения внесенных изменений следует выполнить перезагрузку системы.

ПримечаниеПримечание

Если все потоки исполнителей заняты выполнением длительных запросов, SQL Server может не отвечать на другие запросы, пока один из потоков не завершит работу и не станет доступным. Хотя это и не ошибка, такое поведение иногда нежелательно. Если процесс не отвечает и новые запросы не могут быть обработаны, подключитесь к SQL Server через выделенное административное подключение (DAC) и уничтожьте процесс. Во избежание этого увеличьте максимальное число потоков управления.