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

Применимо к: даSQL Server (все поддерживаемые версии)

В этом разделе описывается настройка параметра конфигурации сервера max degree of parallelism (MAXDOP) в SQL Server с помощью среды SQL Server Management Studio или Transact-SQL. Если экземпляр SQL Server работает на компьютере с более чем одним микропроцессором или ЦП, Компонент Database Engine определяет, можно ли использовать параллелизм. Уровень параллелизма ограничивает максимальное число процессоров, которые задействуются для выполнения одной инструкции для каждого выполнения параллельных планов. Для ограничения количества процессоров в плане параллельного выполнения может быть использован параметр max degree of parallelism . Дополнительные сведения об ограничениях максимальной степени параллелизма (MAXDOP) см. в разделе Рекомендации на этой странице. SQL Server учитывает планы параллельного выполнения для запросов, операций с индексами на языке DDL, параллельной вставки, изменения столбца в режиме "в сети", параллельного сбора статистики и заполнения статических курсоров и курсоров, управляемых набором ключей.

Примечание

SQL Server 2019 (15.x) содержит автоматические рекомендации по настройке параметра конфигурации сервера MAXDOP в процессе установки на основе количества доступных процессоров. Пользовательский интерфейс программы установки позволяет либо принять рекомендуемые параметры, либо задать свое значение. Дополнительные сведения см. в разделе Конфигурация ядра СУБД — страница MaxDOP.
При этом в Azure SQL параметр MAXDOP по умолчанию для каждой новой базы данных и базы данных эластичного пула и управляемого экземпляра имеет значение 8. Дополнительные сведения об MAXDOP в База данных SQL Azure см. в статье Настройка максимальной степени параллелизма (MAXDOP) в Базе данных SQL Azure.

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

Замечания

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

  • Если параметр affinity mask имеет значение, отличное от значения по умолчанию, он может ограничивать число процессоров, доступных для SQL Server в симметричных многопроцессорных системах (SMP).

  • Установка значения 0 в качестве максимальной степени параллелизма (MAXDOP) позволяет SQL Server использовать все доступные процессоры (до 64). Однако в большинстве случаев использовать это значение не рекомендуется. Дополнительные сведения о рекомендуемых значениях максимальной степени параллелизма см. в разделе Рекомендации на этой странице.

  • Чтобы отключить создание параллельных планов, присвойте параметру max degree of parallelism значение 1. Задайте значение для параметра в диапазоне от 1 до 32 767, чтобы указать максимальное количество процессорных ядер, которые могут использоваться при выполнении одного запроса. Если указано значение, превышающее количество доступных процессоров, используется действительное количество доступных процессоров. Если у компьютера только один процессор, то значение параметра max degree of parallelism учитываться не будет.

  • Ограничение максимальной степени параллелизма задается для каждой задачи. Оно не задается для каждого запроса. Это означает, что при выполнении параллельных запросов один запрос может порождать несколько задач вплоть до ограничения MAXDOP и каждая задача будет использовать одну рабочую роль и один планировщик. Дополнительные сведения см. в разделе Планирование параллельных задач статьи Руководство по архитектуре потоков и задач.

  • Параметр конфигурации сервера max degree of parallelism можно переопределить:

  • Операции по созданию и перестройке индексов, а также по удалению кластеризованного индекса могут оказаться достаточно ресурсоемкими. Значение параметра max degree of parallelism для операций с индексами можно переопределить, указав в инструкции параметр индекса MAXDOP. Значение MAXDOP применяется к инструкции во время выполнения и в метаданных индекса не хранится. Дополнительные сведения см. в статье Настройка параллельных операций с индексами.

  • Помимо запросов и операций с индексами, этот параметр также управляет степенью параллелизма при выполнении инструкций DBCC CHECKTABLE, DBCC CHECKDB и DBCC CHECKFILEGROUP. Планы параллельного выполнения для этих инструкций можно отключить с помощью флага трассировки 2528. Дополнительные сведения см. в разделе Флаги трассировки (Transact-SQL).

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

Начиная с SQL Server 2016 (13.x); по умолчанию система Компонент Database Engine автоматически создает узлы архитектуры Soft-NUMA, если во время запуска обнаруживает более восьми физических ядер на один сокет или узел NUMA. Компонент Database Engine помещает логические процессоры одного и того же физического ядра в разных узлах программной архитектуры NUMA. Рекомендации, приведенные в следующей таблице, нацелены на сохранение рабочих потоков параллельного запроса на одном узле программной архитектуры NUMA. Это улучшит производительность запросов и распределение рабочих потоков между узлами NUMA для рабочей нагрузки. Дополнительные сведения см. в разделе Программная архитектура NUMA.

Начиная с SQL Server 2016 (13.x); при настройке значения параметра max degree of parallelism в конфигурации сервера следуйте приведенным ниже рекомендациям.

Конфигурация сервера Количество процессоров Руководство
Сервер с одним узлом NUMA Не более 8 логических процессоров Значение параметра MAXDOP не должно превышать количество логических процессоров
Сервер с одним узлом NUMA Больше 8 логических процессоров Значение параметра MAXDOP должно быть равно 8
Сервер с несколькими узлами NUMA Не более 16 логических процессоров на узел NUMA Значение параметра MAXDOP не должно превышать количество логических процессоров на каждый узел NUMA
Сервер с несколькими узлами NUMA Больше 16 логических процессоров на каждый узел NUMA Значение MAXDOP должно быть равно половине количества логических процессоров на узел NUMA со значением MAX, равным 16

Примечание

Узлы NUMA в приведенной выше таблице — это узлы программной архитектуры NUMA, автоматически создаваемые в SQL Server 2016 (13.x); и более поздних версий, или аппаратной архитектуры NUMA, если узлы программной архитектуры NUMA отключены.
Эти же правила используются в том случае, если значение max degree of parallelism задано для групп рабочей нагрузки регулятора ресурсов. Дополнительные сведения см. в разделе CREATE WORKLOAD GROUP (Transact-SQL).

В версиях с SQL Server 2008 по SQL Server 2014 (12.x) при настройке значения параметра max degree of parallelism в конфигурации сервера следуйте приведенным ниже рекомендациям.

Конфигурация сервера Количество процессоров Руководство
Сервер с одним узлом NUMA Не более 8 логических процессоров Значение параметра MAXDOP не должно превышать количество логических процессоров
Сервер с одним узлом NUMA Больше 8 логических процессоров Значение параметра MAXDOP должно быть равно 8
Сервер с несколькими узлами NUMA Не более 8 логических процессоров на узел NUMA Значение параметра MAXDOP не должно превышать количество логических процессоров на каждый узел NUMA
Сервер с несколькими узлами NUMA Больше 8 логических процессоров на узел NUMA Значение параметра MAXDOP должно быть равно 8

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

Permissions

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

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

Настройка параметра максимальной степени параллелизма

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

  2. Щелкните узел Дополнительно .

  3. В поле Максимальная степень параллелизма укажите максимальное число процессоров, которое может быть использовано в плане параллельного выполнения.

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

Настройка параметра максимальной степени параллелизма

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

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

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере описывается использование процедуры sp_configure для задания значения параметра max degree of parallelism равным 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).

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

Параметр вступает в силу немедленно, без перезапуска сервера.

См. также:

ALTER DATABASE SCOPED CONFIGURATION (Transact-SQL)
Параметр конфигурации сервера «affinity mask»
Параметры конфигурации сервера (SQL Server)
sp_configure (Transact-SQL)
Руководство по архитектуре обработки запросов
Руководство по архитектуре потоков и задач
Настройка параллельных операций с индексами
Указания запросов (Transact-SQL)
Установка параметров индекса

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

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