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

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

ms189329.note(ru-ru,SQL.90).gifПримечание.
Параллельные индексные операции доступны только в выпуске SQL Server 2005 Enterprise Edition.

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

Параметр индекса MAXDOP замещает параметр конфигурации 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 ADD (кластеризованный индекс) CONSTRAINT

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

При выполнении инструкции ALTER INDEX REORGANIZE с предложением LOB_COMPACTION или без него значение max degree of parallelism является однопотоковой операцией. Параметр индекса MAXDOP не может быть задан в инструкции ALTER INDEX REORGANIZE.

Оперативные индексные операции

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

Операции с секционированным индексом

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

Примеры

Следующий пример создает индекс IX_ProductVendor_VendorID таблицы ProductVendor и устанавливает параметр max degree of parallelism в значение 8. Предполагая, что сервер имеет восемь или более процессоров, компонент Database Engine ограничит выполнение индексной операции восемью или меньшим количеством процессоров.

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.indexes
            WHERE name = N'IX_ProductVendor_VendorID')
    DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor;
GO
CREATE INDEX IX_ProductVendor_VendorID 
ON Purchasing.ProductVendor (VendorID)
WITH (MAXDOP=8);
GO

См. также

Основные понятия

Параллельная обработка запросов

Другие ресурсы

ALTER INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL)
DROP INDEX (Transact-SQL)

Справка и поддержка

Получение помощи по SQL Server 2005