Поделиться через


Настройка параметра конфигурации сервера max worker threads

В этом разделе описываются варианты настройки параметра конфигурации сервера max worker threads в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Параметр max worker threads настраивает количество рабочих потоков, доступных для процессов SQL Server. SQL Server использует собственные службы потоков операционных систем, чтобы одна или несколько потоков поддерживали каждую сеть, поддерживаемую SQL Server одновременно, другой поток обрабатывает контрольные точки базы данных, а пул потоков обрабатывает всех пользователей. Значение по умолчанию для параметра max worker threads — 0. Это позволяет SQL Server автоматически настраивать количество рабочих потоков при запуске. Настройка по умолчанию является оптимальной для большинства систем. Но иногда, в зависимости от конфигурации системы, установка параметра max worker threads в другое определенное значение может улучшить производительность.

В этом разделе

Перед началом

Ограничения

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

Рекомендации

  • Этот параметр является дополнительным вариантом и должен быть изменен только опытным администратором базы данных или сертифицированным специалистом SQL Server.

  • Пул потоков помогает оптимизировать производительность при подключении к серверу большого числа пользователей. Обычно для каждого запроса в операционной системе создается отдельный поток. Однако в случае сотен соединений с сервером, использование одного потока на каждый запрос приводит к потреблению большого числа системных ресурсов. Параметр "Максимальное количество рабочих потоков" позволяет SQL Server создавать пул рабочих потоков для обслуживания большего количества запросов, что повышает производительность.

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

    Число процессоров 32-разрядный компьютер 64-разрядный компьютер
    < — 4 процессора 256 512
    8 процессоров 288 576
    16 процессоров 352 704
    32 процессора 480 960
    64 процессора 736 1472
    128 процессоров 4224 4480
    256 процессоров 8320 8576

    Примечание.

    Рекомендации по использованию процессоров в количестве, превышающем 64, см. в разделе Рекомендации по использованию SQL Server на компьютерах, которые имеют более 64 процессоров.

    Предупреждение

    Рекомендуется использовать 1024 в качестве максимального количества рабочих потоков для экземпляра SQL Server, работающего на 32-разрядном компьютере.

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

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

SELECT  
s.session_id,  
r.command,  
r.status,  
r.wait_type,  
r.scheduler_id,  
w.worker_address,  
w.is_preemptive,  
w.state,  
t.task_state,  
t.session_id,  
t.exec_context_id,  
t.request_id  
FROM sys.dm_exec_sessions AS s  
INNERJOIN sys.dm_exec_requests AS r  
    ON s.session_id = r.session_id  
INNER JOIN sys.dm_os_tasks AS t  
    ON r.task_address = t.task_address  
INNER JOIN sys.dm_os_workers AS w  
    ON t.worker_address = w.worker_address  
WHERE s.is_user_process = 0;  
  

Безопасность

Разрешения

Разрешения на выполнение хранимой процедуры sp_configure без параметров или только с первым параметром по умолчанию предоставляются всем пользователям. Для выполнения процедуры sp_configure с обоими параметрами для изменения параметра конфигурации или запуска инструкции RECONFIGURE необходимо иметь разрешение ALTER SETTINGS на уровне сервера. Разрешение ALTER SETTINGS неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin .

Использование среды SQL Server Management Studio

Настройка параметра max worker threads

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.

  2. Щелкните узел Процессоры .

  3. В поле Максимальное число рабочих потоков введите или выберите значение от 128 до 32 767.

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

Использование Transact-SQL

Настройка параметра max worker threads

  1. Соединитесь с ядром СУБД .

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере описывается использование процедуры sp_configure для задания значения параметра max worker threads равным 900.

USE AdventureWorks2012 ;  
GO  
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE ;  
GO  
EXEC sp_configure 'max worker threads', 900 ;  
GO  
RECONFIGURE;  
GO  
  

Дополнительные сведения см. в разделе Параметры конфигурации сервера (SQL Server).

Дальнейшие действия. После настройки параметра max worker threads

Изменение вступит в силу немедленно, не требуя перезапуска ядро СУБД.

См. также

RECONFIGURE (Transact-SQL)
Параметры конфигурации сервера (SQL Server)
sp_configure (Transact-SQL)
Диагностическое соединение для администраторов баз данных