Настройка параллельных операций с индексами

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

В этом разделе определяется максимальная степень параллелизма и объясняется, как изменить этот параметр в SQL Server с помощью SQL Server Management Studio или Transact-SQL.

В системах с несколькими процессорами, работающими под управлением SQL Server Enterprise или более поздней версии, инструкции индекса могут использовать несколько процессоров (ЦП) для выполнения операций сканирования, сортировки и индексов, связанных с инструкцией индекса так же, как и другие запросы. Число ЦП, задействованных при выполнении одной индексной инструкции, определяется параметром конфигурации сервера max degree of parallelism, текущей рабочей нагрузкой и статистикой индекса. Параметр max degree of parallelism определяет максимальное число процессоров, используемых при параллельном выполнении плана. Если sql Server ядро СУБД обнаруживает, что система занята, степень параллелизма операции индекса автоматически уменьшается до запуска выполнения инструкции. Ядро СУБД также может уменьшить степень параллелизма, если ведущий ключевой столбец несекционированного индекса имеет ограниченное количество уникальных значений или частота каждого отдельного значения значительно меняется. Дополнительные сведения см. в разделе Руководство по архитектуре обработки запросов.

Примечание.

Параллельные операции индексов недоступны в каждом выпуске SQL Server. Дополнительные сведения см. в выпусках и поддерживаемых функциях SQL Server 2022.

В этом разделе

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

Ограничения

  • Число процессоров, используемых оптимизатором запросов, как правило, обеспечивает оптимальную производительность. Однако некоторые операции, например создание, перестроение или удаление очень больших индексов, требуют большого количества ресурсов и могут привести к нехватке ресурсов для других приложений и операций базы данных на время выполнения операции с индексами. При возникновении этой проблемы можно вручную установить максимальное количество процессоров, которые используются при выполнении индексной инструкции, ограничив число процессоров, используемых в операции с индексами.

  • Параметр индекса MAXDOP замещает параметр конфигурации max degree of parallelism только для запросов, указывающих этот параметр. В следующей таблице перечислены действительные целочисленные значения, которые могут быть установлены для параметра конфигурации максимальной степени параллелизма и параметра индекса MAXDOP.

    значение Описание
    0 Указывает, что сервер определяет число используемых процессоров в зависимости от текущей рабочей нагрузки. Это значение по умолчанию, которое рекомендуется использовать.
    1 Подавляет формирование параллельных планов. Операция будет выполнена последовательно.
    2–64 Ограничивает число процессоров указанным значением. Может быть использовано меньше процессоров, в зависимости от рабочей нагрузки. Если указано значение, превышающее количество доступных процессоров, будет использоваться реальное количество доступных процессоров.
  • Параллельное выполнение индекса и параметр индекса MAXDOP применяются к следующим операторам Transact-SQL:

  • Параметр индекса MAXDOP не может быть задан в инструкции ALTER INDEX (...) REORGANIZE.

  • Операции с секционированными индексами, для которых необходима сортировка, могут требовать больше памяти, если оптимизатор запросов применяет степени параллелизма к операциям построения. Чем выше степень параллелизма, тем больше требуется памяти. Дополнительные сведения см. в разделе Partitioned Tables and Indexes.

Разрешения

Необходимо разрешение ALTER для таблицы или представления.

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

Задание параметра max degree of parallelism для индекса

  1. В обозревателе объектов щелкните знак «плюс», чтобы развернуть базу данных, содержащую таблицу, в которой необходимо указать параметр max degree of parallelism для индекса.

  2. Разверните папку Таблицы.

  3. Щелкните знак «плюс», чтобы развернуть таблицу, в которой необходимо указать параметр max degree of parallelism для индекса.

  4. Разверните папку Индексы.

  5. Щелкните правой кнопкой мыши индекс, для которого нужно задать параметр max degree of parallelism, и выберите пункт Свойства.

  6. В разделе Выбор страницыщелкните Параметры.

  7. Выберите свойство Максимальная степень параллелизмаи введите значение от 1 до 64.

  8. Щелкните OK.

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

Задание параметра max degree of parallelism для существующего индекса

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2022;   
    GO  
    /*Alters the IX_ProductVendor_VendorID index on the Purchasing.ProductVendor table so that, if the server has eight or more processors, the Database Engine will limit the execution of the index operation to eight or fewer processors.  
    */  
    ALTER INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor  
    REBUILD WITH (MAXDOP=8);   
    GO  
    

Дополнительные сведения см. в разделе ALTER INDEX (Transact-SQL).

Указание максимальной степени параллелизма при создании нового индекса

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На стандартной панели выберите пункт Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить.

    USE AdventureWorks2022;  
    GO  
    CREATE INDEX IX_ProductVendor_NewVendorID   
    ON Purchasing.ProductVendor (BusinessEntityID)  
    WITH (MAXDOP=8);  
    GO  
    

См. также

Руководство по архитектуре обработки запросов
Инструкция CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL)
DROP INDEX (Transact-SQL)
Инструкция ALTER TABLE (Transact-SQL)
ALTER TABLE table_constraint (Transact-SQL)
ALTER TABLE index_option (Transact-SQL)