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

В этом разделе определяется параметр max degree of parallelism и описывается порядок изменения этого параметра в SQL Server 2012 с помощью среды Среда SQL Server Management Studio или Transact-SQL. На многопроцессорных компьютерах, где установлен выпуск SQL Server Enterprise Edition или более многофункциональный, индексные инструкции могут использовать несколько процессоров для выполнения операций просмотра, сортировки и операций с индексами, связанных с индексной инструкцией, аналогично другим запросам. Число процессоров, используемых для выполнения одной инструкции с индексом, определяется с помощью параметра конфигурации max degree of parallelism, текущей рабочей нагрузки и статистики индекса. Параметр max degree of parallelism определяет максимальное число процессоров для использования в параллельном выполнении планов. Если компонент Компонент SQL Server Database Engine определяет, что система занята, степень параллелизма операции с индексами автоматически уменьшается перед началом выполнения инструкции. Компонент Компонент Database Engine также может уменьшить степень параллелизма, если ведущий ключевой столбец несекционированного индекса имеет ограниченное число различных значений или частота каждого уникального значения существенно изменяется.

ПримечаниеПримечание

Параллельные операции с индексами доступны не во всех выпусках SQL Server. Дополнительные сведения см. в разделе Возможности, поддерживаемые различными выпусками SQL Server 2012.

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

  • Перед началом работы выполните следующие действия.

    Ограничения

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

  • Для настройки параметра max degree of parallelism используется:

    Среда SQL Server Management Studio

    Transact-SQL

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

Ограничения

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

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

    Значение

    Описание

    0

    Указывает, что сервер определяет число используемых процессоров в зависимости от текущей рабочей нагрузки. Это значение по умолчанию, которое рекомендуется использовать.

    1

    Подавляет формирование параллельных планов. Операция будет выполнена последовательно.

    2-64

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

  • Параллельное выполнение индексов и параметр индекса MAXDOP применяются в следующих инструкциях Transact-SQL:

    • CREATE INDEX

    • ALTER INDEX REBUILD

    • DROP INDEX (применяется только для кластеризованных индексов)

    • ALTER TABLE ADD (индекс) CONSTRAINT

    • ALTER TABLE DROP (кластеризованный индекс) CONSTRAINT

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

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

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

Разрешения

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование среды 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. Нажмите кнопку ОК.

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

  1. В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.

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

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

    USE AdventureWorks2012; 
    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).

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

  1. В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[Top]