Настройка параметра конфигурации сервера 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 Management Studio

    Transact-SQL

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

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

Ограничения

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

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

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

  • Пул потоков помогает оптимизировать производительность при подключении к серверу большого числа пользователей. Обычно для каждого запроса в операционной системе создается отдельный поток. Однако в случае сотен соединений с сервером, использование одного потока на каждый запрос приводит к потреблению большого числа системных ресурсов. Параметр max worker threads позволяет 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 процессоров.

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

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

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

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

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.

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

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

  1. Подключитесь к компоненту Компонент Database Engine.

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

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

Изменения вступят в силу немедленно без необходимости перезапуска компонента Компонент Database Engine.

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Справочник

RECONFIGURE (Transact-SQL)

sp_configure (Transact-SQL)

Основные понятия

Параметры конфигурации сервера

Диагностическое соединение для администраторов баз данных