Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
Azure SQL База данных
Azure SQL Управляемый экземпляр
SQL База данных в Microsoft Fabric
В этой статье определяется максимальная степень параллелизма и объясняется, как изменить этот параметр в SQL Server с помощью SQL Server Management Studio или Transact-SQL.
В многопроцессорных системах, работающих под управлением SQL Server Enterprise или более поздних версий, операторы индекса могут использовать несколько процессоров (ЦП) для выполнения операций сканирования, сортировки и индексов, связанных с инструкцией индекса так же, как и другие запросы. Число ЦП, задействованных при выполнении одной индексной инструкции, определяется параметром конфигурации сервера max degree of parallelism, текущей рабочей нагрузкой и статистикой индекса.
Параметр max degree of parallelism определяет максимальное число процессоров, используемых при параллельном выполнении плана. Если Ядро СУБД SQL Server обнаруживает, что система занята, степень параллелизма операции индекса автоматически уменьшается до начала выполнения инструкции. Ядро СУБД также может уменьшить степень параллелизма, если ведущий ключевой столбец несекционированного индекса имеет ограниченное количество уникальных значений или частота каждого отдельного значения значительно меняется. Дополнительные сведения см. в разделе Руководство по архитектуре обработки запросов.
Note
Параллельные операции индексов недоступны в каждом выпуске SQL Server. Дополнительные сведения см. в выпусках и поддерживаемых функциях SQL Server 2022.
Ограничения
Число процессоров, используемых оптимизатором запросов, как правило, обеспечивает оптимальную производительность. Однако некоторые операции, например создание, перестроение или удаление очень больших индексов, требуют большого количества ресурсов и могут привести к нехватке ресурсов для других приложений и операций базы данных на время выполнения операции с индексами.
При возникновении этой проблемы можно вручную установить максимальное количество процессоров, которые используются при выполнении индексной инструкции, ограничив число процессоров, используемых в операции с индексами.
Параметр
MAXDOPиндекса переопределяет параметр конфигурации максимальной степени параллелизма только для запроса, указывающего этот параметр. В следующей таблице перечислены допустимые целые значения, которые можно указать с параметром конфигурации максимальной степени параллелизма и параметромMAXDOPиндекса.Value Description 0 Указывает, что сервер определяет число используемых процессоров в зависимости от текущей рабочей нагрузки. Это значение по умолчанию, которое рекомендуется использовать. 1 Подавляет формирование параллельных планов. Операция выполняется последовательно. 2-64 Ограничивает число процессоров указанным значением. Меньше процессоров может использоваться в зависимости от текущей рабочей нагрузки. Если указано значение, превышающее количество доступных процессоров, будет использоваться реальное количество доступных процессоров. Параллельное
MAXDOPвыполнение индекса и параметр индекса применяются к следующим Transact-SQL операторам:- CREATE INDEX
- ALTER INDEX (...) ПЕРЕСТРОИТЬ
- DROP INDEX (применяется только для кластеризованных индексов)
- ALTER TABLE ADD (индекс) CONSTRAINT
- ALTER TABLE DROP (кластеризованный индекс) CONSTRAINT
Параметр
MAXDOPиндекса нельзя указать в инструкцииALTER INDEX (...) REORGANIZE.Операции с секционированными индексами, для которых необходима сортировка, могут требовать больше памяти, если оптимизатор запросов применяет степени параллелизма к операциям построения. Чем выше степень параллелизма, тем больше требуется памяти. Дополнительные сведения см. в разделах Секционированные таблицы и индексы.
Permissions
Необходимо разрешение ALTER для таблицы или представления.
Использование SQL Server Management Studio
Установка максимальной степени параллелизма в индексе
В обозревателе объектов выберите знак плюса, чтобы развернуть базу данных, содержащую таблицу, в которой требуется задать максимальную степень параллелизма для индекса.
Разверните папку Таблицы.
Выберите знак плюса, чтобы развернуть таблицу, в которой требуется задать максимальную степень параллелизма для индекса.
Разверните папку Индексы.
Щелкните правой кнопкой мыши индекс, для которого нужно задать параметр max degree of parallelism, и выберите пункт Свойства.
В разделе Выбор страницыщелкните Параметры.
Выберите свойство Максимальная степень параллелизмаи введите значение от 1 до 64.
Нажмите ОК.
Использование Transact-SQL
Установка максимальной степени параллелизма в существующем индексе
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. Этот код изменяет
IX_ProductVendor_VendorIDиндекс таблицыPurchasing.ProductVendorтаким образом, чтобы, если сервер имеет восемь или более процессоров, ядро СУБД ограничивает выполнение операции индекса до восьми или меньше процессоров.USE AdventureWorks2022; GO ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor REBUILD WITH(MAXDOP = 8); GO
Подробные сведения см. в статье ALTER INDEX (Transact-SQL).
Указание максимальной степени параллелизма при создании нового индекса
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.
USE AdventureWorks2022; GO CREATE INDEX IX_ProductVendor_NewVendorID ON Purchasing.ProductVendor(BusinessEntityID) WITH (MAXDOP = 8); GO