Настройка параметра конфигурации сервера max degree of parallelismConfigure the max degree of parallelism Server Configuration Option

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

В этом разделе описывается настройка параметра конфигурации сервера max degree of parallelism (MAXDOP) в SQL Server с помощью среды SQL Server Management StudioSQL Server Management Studio или Transact-SQLTransact-SQL.This topic describes how to configure the max degree of parallelism (MAXDOP) server configuration option in SQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Если экземпляр SQL ServerSQL Server работает на компьютере с более чем одним микропроцессором или ЦП, Компонент Database EngineDatabase Engine определяет, можно ли использовать параллелизм.When an instance of SQL ServerSQL Server runs on a computer that has more than one microprocessor or CPU, the Компонент Database EngineDatabase Engine detects whether parallelism can be used. Уровень параллелизма ограничивает максимальное число процессоров, которые задействуются для выполнения одной инструкции для каждого выполнения параллельных планов.The degree of parallelism sets the number of processors employed to run a single statement, for each parallel plan execution. Для ограничения количества процессоров в плане параллельного выполнения может быть использован параметр max degree of parallelism .You can use the max degree of parallelism option to limit the number of processors to use in parallel plan execution. Дополнительные сведения об ограничениях максимальной степени параллелизма (MAXDOP) см. в разделе Ограничения на этой странице.For more detail on the limit set by max degree of parallelism (MAXDOP), see Limitations and Restrictions section in this page. SQL ServerSQL Server учитывает планы параллельного выполнения для запросов, операций с индексами на языке DDL, параллельной вставки, изменения столбца в режиме "в сети", параллельного сбора статистики и заполнения статических курсоров и курсоров, управляемых набором ключей.considers parallel execution plans for queries, index data definition language (DDL) operations, parallel inserts, online alter column, parallel stats collection, and static and keyset-driven cursor population.

Примечание

SQL Server 2019 (15.x)SQL Server 2019 (15.x) содержит автоматические рекомендации по настройке параметра конфигурации сервера MAXDOP в процессе установки на основе количества доступных процессоров.SQL Server 2019 (15.x)SQL Server 2019 (15.x) introduces automatic recommendations for setting the MAXDOP server configuration option during the installation process based on the number of processors available. Пользовательский интерфейс программы установки позволяет либо принять рекомендуемые параметры, либо задать свое значение.The setup user interface allows you to either accept the recommended settings or enter your own value. Дополнительные сведения см. в разделе Конфигурация ядра СУБД — страница MaxDOP.For more information, see Database Engine Configuration - MaxDOP page.

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

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

  • Если параметр affinity mask имеет значение, отличное от значения по умолчанию, он может ограничивать число процессоров, доступных для SQL ServerSQL Server в симметричных многопроцессорных системах (SMP).If the affinity mask option is not set to the default, it may restrict the number of processors available to SQL ServerSQL Server on symmetric multiprocessing (SMP) systems.

  • Ограничение параметра max degree of parallelism (MAXDOP) задается для каждой задачи.The max degree of parallelism (MAXDOP) limit is set per task. Оно не задается для каждого запроса.It is not a per request or per query limit. Это означает, что при выполнении параллельных запросов один запрос может порождать несколько задач вплоть до ограничения MAXDOP и каждая задача будет использовать одну рабочую роль и один планировщик.This means that during a parallel query execution, a single request can spawn multiple tasks up to the MAXDOP limit, and each task will use one worker and one scheduler. Дополнительные сведения см. в разделе Планирование параллельных задач статьи Руководство по архитектуре потоков и задач.For more information, see the Scheduling parallel tasks section in the Thread and Task Architecture Guide.

Рекомендации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.

  • Чтобы разрешить серверу определять максимальную степень параллелизма, установите 0 в качестве значения данного параметра, то есть значение по умолчанию.To enable the server to determine the maximum degree of parallelism, set this option to 0, the default value. Установка значения 0 в качестве максимальной степени параллелизма позволяет SQL ServerSQL Server использовать все доступные процессоры (до 64 процессоров).Setting maximum degree of parallelism to 0 allows SQL ServerSQL Server to use all the available processors up to 64 processors. Чтобы отключить создание параллельных планов, присвойте параметру max degree of parallelism значение 1.To suppress parallel plan generation, set max degree of parallelism to 1. Задайте значение для параметра в диапазоне от 1 до 32 767, чтобы указать максимальное количество процессорных ядер, которые могут быть использованы при выполнении одного запроса.Set the value to a number from 1 to 32,767 to specify the maximum number of processor cores that can be used by a single query execution. Если указано значение, превышающее количество доступных процессоров, используется действительное количество доступных процессоров.If a value greater than the number of available processors is specified, the actual number of available processors is used. Если у компьютера только один процессор, то значение параметра max degree of parallelism учитываться не будет.If the computer has only one processor, the max degree of parallelism value is ignored.

  • Значение параметра max degree of parallelism можно переопределить, задав в инструкции указание запроса MAXDOP.You can override the max degree of parallelism value in queries by specifying the MAXDOP query hint in the query statement. Дополнительные сведения см. в разделе Указания запросов (Transact-SQL).For more information, see Query Hints (Transact-SQL).

  • Операции по созданию и перестройке индексов, а также по удалению кластеризованного индекса могут оказаться достаточно ресурсоемкими.Index operations that create or rebuild an index, or that drop a clustered index, can be resource intensive. Значение параметра max degree of parallelism для операций с индексами можно переопределить, указав в инструкции параметр индекса MAXDOP.You can override the max degree of parallelism value for index operations by specifying the MAXDOP index option in the index statement. Значение MAXDOP применяется к инструкции во время выполнения и в метаданных индекса не хранится.The MAXDOP value is applied to the statement at execution time and is not stored in the index metadata. Дополнительные сведения см. в статье Настройка параллельных операций с индексами.For more information, see Configure Parallel Index Operations.

  • Помимо запросов и операций с индексами, этот параметр также управляет степенью параллелизма при выполнении инструкций DBCC CHECKTABLE, DBCC CHECKDB и DBCC CHECKFILEGROUP.In addition to queries and index operations, this option also controls the parallelism of DBCC CHECKTABLE, DBCC CHECKDB, and DBCC CHECKFILEGROUP. Планы параллельного выполнения для этих инструкций можно отключить с помощью флага трассировки 2528.You can disable parallel execution plans for these statements by using trace flag 2528. Дополнительные сведения см. в разделе Флаги трассировки (Transact-SQL).For more information, see Trace Flags (Transact-SQL).

Совет

Для выполнения этого на уровне запросов используйте указание запроса MAXDOP.To accomplish this at the query level, use the MAXDOP query hint.
На уровне базы данных используйте конфигурацию области баз данныхMAXDOP.To accomplish this at the database level, use the MAXDOP database scoped configuration.
На уровне рабочих нагрузок используйте параметр конфигурации группы рабочей нагрузки Resource Governor MAX_DOP.To accomplish this at the workload level, use the MAX_DOP Resource Governor workload group configuration option.

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

Начиная с SQL Server 2016 (13.x);SQL Server 2016 (13.x) по умолчанию система Компонент Database EngineDatabase Engine автоматически создает узлы архитектуры Soft-NUMA, если во время запуска обнаруживает более восьми физических ядер на один сокет или узел NUMA.Starting with SQL Server 2016 (13.x);SQL Server 2016 (13.x), during service startup if the Компонент Database EngineDatabase Engine detects more than eight physical cores per NUMA node or socket at startup, soft-NUMA nodes are created automatically by default. Компонент Database EngineDatabase Engine помещает логические процессоры одного и того же физического ядра в разных узлах программной архитектуры NUMA.The Компонент Database EngineDatabase Engine places logical processors from the same physical core into different soft-NUMA nodes. Рекомендации, приведенные в следующей таблице, нацелены на сохранение рабочих потоков параллельного запроса на одном узле программной архитектуры NUMA.The recommendations in the table below are aimed at keeping all the worker threads of a parallel query within the same soft-NUMA node. Это улучшит производительность запросов и распределение рабочих потоков между узлами NUMA для рабочей нагрузки.This will improve the performance of the queries and distribution of worker threads across the NUMA nodes for the workload. Дополнительные сведения см. в разделе Программная архитектура NUMA.For more information, see Soft-NUMA.

Начиная с SQL Server 2016 (13.x);SQL Server 2016 (13.x) при настройке значения параметра max degree of parallelism в конфигурации сервера следуйте приведенным ниже рекомендациям.Starting with SQL Server 2016 (13.x);SQL Server 2016 (13.x), use the following guidelines when you configure the max degree of parallelism server configuration value:

Конфигурация сервераServer configuration Количество процессоровNumber of processors РуководствоGuidance
Сервер с одним узлом NUMAServer with single NUMA node Не более 8 логических процессоровLess than or equal to 8 logical processors Значение параметра MAXDOP не должно превышать количество логических процессоровKeep MAXDOP at or below # of logical processors
Сервер с одним узлом NUMAServer with single NUMA node Больше 8 логических процессоровGreater than 8 logical processors Значение параметра MAXDOP должно быть равно 8Keep MAXDOP at 8
Сервер с несколькими узлами NUMAServer with multiple NUMA nodes Не более 16 логических процессоров на узел NUMALess than or equal to 16 logical processors per NUMA node Значение параметра MAXDOP не должно превышать количество логических процессоров на каждый узел NUMAKeep MAXDOP at or below # of logical processors per NUMA node
Сервер с несколькими узлами NUMAServer with multiple NUMA nodes Больше 16 логических процессоров на каждый узел NUMAGreater than 16 logical processors per NUMA node Значение MAXDOP должно быть равно половине количества логических процессоров на узел NUMA со значением MAX, равным 16Keep MAXDOP at half the number of logical processors per NUMA node with a MAX value of 16

Примечание

Узлы NUMA в приведенной выше таблице — это узлы программной архитектуры NUMA, автоматически создаваемые в SQL Server 2016 (13.x);SQL Server 2016 (13.x) и более поздних версий, или аппаратной архитектуры NUMA, если узлы программной архитектуры NUMA отключены.NUMA node in the above table refers to soft-NUMA nodes automatically created by SQL Server 2016 (13.x);SQL Server 2016 (13.x) and higher versions, or hardware-based NUMA nodes if soft-NUMA has been disabled.
Эти же правила используются в том случае, если значение max degree of parallelism задано для групп рабочей нагрузки регулятора ресурсов.Use these same guidelines when you set the max degree of parallelism option for Resource Governor workload groups. Дополнительные сведения см. в разделе CREATE WORKLOAD GROUP (Transact-SQL).For more information, see CREATE WORKLOAD GROUP (Transact-SQL).

В версиях с SQL Server 2008SQL Server 2008 по SQL Server 2014 (12.x)SQL Server 2014 (12.x) при настройке значения параметра max degree of parallelism в конфигурации сервера следуйте приведенным ниже рекомендациям.From SQL Server 2008SQL Server 2008 through SQL Server 2014 (12.x)SQL Server 2014 (12.x), use the following guidelines when you configure the max degree of parallelism server configuration value:

Конфигурация сервераServer configuration Количество процессоровNumber of processors РуководствоGuidance
Сервер с одним узлом NUMAServer with single NUMA node Не более 8 логических процессоровLess than or equal to 8 logical processors Значение параметра MAXDOP не должно превышать количество логических процессоровKeep MAXDOP at or below # of logical processors
Сервер с одним узлом NUMAServer with single NUMA node Больше 8 логических процессоровGreater than 8 logical processors Значение параметра MAXDOP должно быть равно 8Keep MAXDOP at 8
Сервер с несколькими узлами NUMAServer with multiple NUMA nodes Не более 8 логических процессоров на узел NUMALess than or equal to 8 logical processors per NUMA node Значение параметра MAXDOP не должно превышать количество логических процессоров на каждый узел NUMAKeep MAXDOP at or below # of logical processors per NUMA node
Сервер с несколькими узлами NUMAServer with multiple NUMA nodes Больше 8 логических процессоров на узел NUMAGreater than 8 logical processors per NUMA node Значение параметра MAXDOP должно быть равно 8Keep MAXDOP at 8

безопасность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 StudioUsing SQL Server Management Studio

Настройка параметра максимальной степени параллелизмаTo configure the max degree of parallelism option

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

  2. Щелкните узел Дополнительно .Click the Advanced node.

  3. В поле Максимальная степень параллелизма укажите максимальное число процессоров, которое может быть использовано в плане параллельного выполнения.In the Max Degree of Parallelism box, select the maximum number of processors to use in parallel plan execution.

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

Настройка параметра максимальной степени параллелизмаTo configure the max degree of parallelism 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 degree of parallelism равным 16.This example shows how to use sp_configure to configure the max degree of parallelism option to 16.

USE AdventureWorks2012 ;  
GO   
EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  
EXEC sp_configure 'max degree of parallelism', 16;  
GO  
RECONFIGURE WITH OVERRIDE;  
GO  

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

Дальнейшие действия. После настройки параметра max degree of parallelismFollow Up: After you configure the max degree of parallelism option

Параметр вступает в силу немедленно, без перезапуска сервера.The setting takes effect immediately without restarting the server.

См. также:See Also

ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL) ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
Параметр конфигурации сервера «affinity mask» affinity mask Server Configuration Option
Параметры конфигурации сервера (SQL Server) Server Configuration Options (SQL Server)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
Руководство по архитектуре обработки запросов Query Processing Architecture Guide
Руководство по архитектуре потоков и задач Thread and Task Architecture Guide
Настройка параллельных операций с индексами Configure Parallel Index Operations
Указания запросов (Transact-SQL) Query Hints (Transact-SQL)
Установка параметров индексаSet Index Options

Дальнейшие действияNext steps

RECONFIGURE (Transact-SQL) Мониторинг и настройка производительностиRECONFIGURE (Transact-SQL) Monitor and Tune for Performance