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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

В этом разделе описываются способы настройки параметра конфигурации сервера max worker threads в SQL ServerSQL Server с помощью среды SQL Server Management StudioSQL Server Management Studio или Transact-SQLTransact-SQL.This topic describes how to configure the max worker threads server configuration option in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Параметр max worker threads используется для установки количества рабочих потоков, доступных процессам SQL ServerSQL Server .The max worker threads option configures the number of worker threads that are available to SQL ServerSQL Server processes. SQL ServerSQL Server используются собственные службы для потоков операционных систем, поэтому один или несколько потоков одновременно поддерживают все сети, которые поддерживает SQL ServerSQL Server , еще один поток обрабатывает контрольные точки базы данных, а пул потоков обрабатывает запросы от всех пользователей.uses the native thread services of the operating systems so that one or more threads support each network that SQL ServerSQL Server supports simultaneously, another thread handles database checkpoints, and a pool of threads handles all users. Значение по умолчанию для параметра max worker threads — 0.The default value for max worker threads is 0. Это позволяет SQL ServerSQL Server автоматически настраивать количество рабочих потоков при запуске.This enables SQL ServerSQL Server to automatically configure the number of worker threads at startup. Настройка по умолчанию является оптимальной для большинства систем.The default setting is best for most systems. Но иногда, в зависимости от конфигурации системы, установка параметра max worker threads в другое определенное значение может улучшить производительность.However, depending on your system configuration, setting max worker threads to a specific value sometimes improves performance.

В этом разделеIn This Topic

Перед началомBefore You Begin

ОграниченияLimitations and Restrictions

  • Если реальное количество запросов меньше значения, заданного параметром max worker threads, каждый запрос обрабатывается одним потоком.When the actual number of query requests is less than the amount set in max worker threads, one thread handles each query request. Однако если реальное количество потоков превышает число, заданное параметром max worker threads, SQL ServerSQL Server использует пул рабочих потоков, так что следующий доступный рабочий поток сможет обработать запрос.However, if the actual number of query request exceeds the amount set in max worker threads, SQL ServerSQL Server pools the worker threads so that the next available worker thread can handle the request.

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

  • Это расширенный параметр, и изменять его следует только опытным администраторам баз данных или сертифицированным по SQL ServerSQL Server специалистам.This option is an advanced option and should be changed only by an experienced database administrator or certified SQL ServerSQL Server professional. Если вы считаете, что есть проблема с производительностью, вероятно, причина не в доступности рабочих потоков.If you suspect that there is a performance problem, it is probably not the availability of worker threads. Скорее всего, их ожидание вызвано чем-то наподобие операций ввода-вывода.The cause is more likely something like I/O that is causing the worker threads to wait. Рекомендуется найти причину проблемы производительности, прежде чем изменять параметр max worker threads.It is best to find the root cause of a performance issue before you change the max worker threads setting.

  • Пул потоков помогает оптимизировать производительность при подключении к серверу большого числа пользователей.Thread pooling helps optimize performance when large numbers of clients are connected to the server. Обычно для каждого запроса в операционной системе создается отдельный поток.Usually, a separate operating system thread is created for each query request. Однако в случае сотен соединений с сервером, использование одного потока на каждый запрос приводит к потреблению большого числа системных ресурсов.However, with hundreds of connections to the server, using one thread per query request can consume large amounts of system resources. Параметр max worker threads позволяет SQL ServerSQL Server создавать пул рабочих потоков, чтобы обслужить большое число запросов, что улучшает производительность.The max worker threads option enables SQL ServerSQL Server to create a pool of worker threads to service a larger number of query requests, which improves performance.

  • В следующей таблице показано автоматически настраиваемое максимальное число рабочих потоков для различных сочетаний процессоров и версий SQL ServerSQL Server.The following table shows the automatically configured number of max worker threads for various combinations of CPUs and versions of SQL ServerSQL Server.

    Число процессоровNumber of CPUs 32-разрядный компьютер32-bit computer 64-разрядный компьютер64-bit computer
    < — 4 процессора<= 4 processors 256256 512512
    8 процессоров8 processors 288288 576576
    16 процессоров16 processors 352352 704704
    32 процессора32 processors 480480 960960
    64 процессора64 processors 736736 14721472
    128 процессоров128 processors 42244224 44804480
    256 процессоров256 processors 83208320 85768576

    Используется следующая формула.Using the following formula:

    Число процессоровNumber of CPUs 32-разрядный компьютер32-bit computer 64-разрядный компьютер64-bit computer
    < — 4 процессора<= 4 processors 256256 512512
    > — 4 процессора и < — 64 процессора> 4 processors and < 64 processors 256 + ((число логических ЦП – 4) * 8)256 + ((logical CPU's - 4) * 8) 512 + ((число логических ЦП – 4) * 16)512 + ((logical CPU's - 4) * 16)
    > — 64 процессора> 64 processors 256 + ((число логических ЦП – 4) * 32)256 + ((logical CPU's - 4) * 32) 512 + ((число логических ЦП – 4) * 32)512 + ((logical CPU's - 4) * 32)

    Примечание

    SQL ServerSQL Server больше нельзя устанавливать в 32-разрядной операционной системе.can no longer be installed on a 32-bit operating system. Значения для 32-разрядного компьютера приведены, чтобы помочь клиентам, работающим с SQL Server 2014 (12.x)SQL Server 2014 (12.x) и более ранних версий.32-bit computer values are listed for the assistance of customers running SQL Server 2014 (12.x)SQL Server 2014 (12.x) and earlier. Для экземпляра SQL ServerSQL Server, работающего на 32-разрядном компьютере, рекомендуется ограничить число рабочих потоков до 1024.We recommend 1,024 as the maximum number of worker threads for an instance of SQL ServerSQL Server that is running on a 32-bit computer.

    Примечание

    Рекомендации по использованию процессоров в количестве, превышающем 64, см. в разделе Рекомендации по использованию SQL Server на компьютерах, которые имеют более 64 процессоров.For recommendations on using more than 64 CPUs, refer to Best Practices for Running SQL Server on Computers That Have More Than 64 CPUs.

  • Если все рабочие потоки заняты выполнением длительных запросов, SQL ServerSQL Server может не отвечать на другие запросы, пока один из потоков не завершит работу и не станет доступным.When all worker threads are active with long running queries, SQL ServerSQL Server might appear unresponsive until a worker thread completes and becomes available. Хотя это и не ошибка, такое поведение иногда нежелательно.Although this is not a defect, it can sometimes be undesirable. Если процесс не отвечает и новые запросы не могут быть обработаны, подключитесь к SQL ServerSQL Server через выделенное административное соединение (DAC) и уничтожьте процесс.If a process appears to be unresponsive and no new queries can be processed, then connect to SQL ServerSQL Server using the dedicated administrator connection (DAC), and kill the process. Во избежание этого увеличьте максимальное число потоков управления.To prevent this, increase the number of max worker threads.

Параметр конфигурации сервера Максимальное количество рабочих потоков не ограничивает все потоки, которые могут быть порождены в системе.The max worker threads server configuration option does not limit all threads that may be spanwed in the system. Потоки, требуемые для групп доступности, Service Broker, диспетчера блокировок или других задач порождаются независимо от этого ограничения.Threads required for tasks such as Availibility Groups, Service Broker, Lock Manager, or others are spawned outside this limit. Если число настроенных потоков превышается, то следующий запрос будет содержать сведения о системных задачах, породивших дополнительные потоки.If the number of threads configured is being exceeded, the following query will provide information about the system tasks that have spawned the additional threads.

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  
INNER JOIN 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;  

безопасностьSecurity

PermissionsPermissions

Разрешения на выполнение хранимой процедуры sp_configure без параметров или только с первым параметром по умолчанию предоставляются всем пользователям.Execute permissions on sp_configure with no parameters or with only the first parameter are granted to all users by default. Для выполнения процедуры sp_configure с обоими параметрами для изменения параметра конфигурации или запуска инструкции RECONFIGURE необходимо иметь разрешение ALTER SETTINGS на уровне сервера.To execute sp_configure with both parameters to change a configuration option or to run the RECONFIGURE statement, a user must be granted the ALTER SETTINGS server-level permission. Разрешение ALTER SETTINGS неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin.The ALTER SETTINGS permission is implicitly held by the sysadmin and serveradmin fixed server roles.

Использование SQL Server Management StudioSQL Server Management StudioUsing SQL Server Management StudioSQL Server Management Studio

Настройка параметра max worker threadsTo configure the max worker threads option

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.In Object Explorer, right-click a server and select Properties.

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

  3. В поле Максимальное число рабочих потоков введите или выберите значение от 128 до 32 767.In the Max worker threads box, type or select a value from 128 through 32,767.

Совет

Используйте параметр max worker threads для установки количества рабочих потоков, доступных процессам SQL ServerSQL Server .Use the max worker threads option to configure the number of worker threads available to SQL ServerSQL Server processes. Значение по умолчанию параметра max worker threads является оптимальным для большинства систем.The default setting for max worker threads is best for most systems. Но в зависимости от конфигурации системы установка параметра max worker threads в меньшее значение может улучшить производительность.However, depending on your system configuration, setting max worker threads to a smaller value sometimes improves performance. Дополнительные сведения см. в разделе Рекомендации на этой странице.See Recommendations in this page for more information.

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

Настройка параметра max worker threadsTo configure the max worker threads option

  1. Установите соединение с компонентом Компонент Database EngineDatabase Engine.Connect to the Компонент Database EngineDatabase Engine.

  2. На панели «Стандартная» нажмите Создать запрос.From the Standard bar, click New Query.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.Copy and paste the following example into the query window and click Execute. В этом примере описывается использование процедуры sp_configure для задания значения параметра max worker threads равным 900.This example shows how to use sp_configure to configure the max worker threads option to 900.

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

Дальнейшие действия. После настройки параметра "Максимальное количество рабочих потоков"Follow Up: After you configure the max worker threads option

Изменения вступят в силу сразу после выполнения RECONFIGURE без необходимости перезапуска Компонент Database EngineDatabase Engine.The change will take effect immediately after executing RECONFIGURE, without requiring the Компонент Database EngineDatabase Engine to restart.

См. также:See Also

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