Параллельные операции над индексами
Планы запросов, построенные для операций создания или перестроения индекса либо удаления кластеризованного индекса, поддерживают возможность параллельной, многопоточной обработки на многопроцессорных компьютерах.
Примечание. |
---|
Параллельные операции над индексами доступны только в выпуске SQL Server 2005 Enterprise Edition. |
В SQL Server 2005 используются одни и те же алгоритмы определения степени параллелизма (общего числа запускаемых отдельных потоков) как для индексных операций, так и для других запросов. Максимальная степень параллелизма для операции над индексом определяется параметром конфигурации сервера max degree of parallelism. Значение max degree of parallelism можно переопределять для отдельных операций с индексами путем настройки параметра индекса MAXDOP в инструкциях CREATE INDEX, ALTER INDEX, DROP INDEX и ALTER TABLE.
Когда SQL Server Database Engine строит план выполнения индекса, количество параллельных операций устанавливается на наиболее низкое из перечисленных ниже значений.
- Число микропроцессоров (ЦП) в компьютере.
- Число, указанное в качестве параметра конфигурации сервера max degree of parallelism.
- Число ЦП, не превышающих порог загруженности рабочими потоками SQL Server.
Например, на компьютере с восемью ЦП, на котором значение max degree of parallelism равно 6, для операции над индексом создается не более шести параллельных потоков. Если пять ЦП на компьютере загружены рабочими потоками SQL Server сверх порогового значения при построении плана выполнения индекса, в этом плане задаются только три параллельных потока.
Главные фазы параллельных операций над индексами таковы.
- Координирующий поток быстро и случайным образом просматривает таблицу для оценки распределения индексных ключей. Координирующий поток устанавливает ключевые границы, образующие число диапазонов ключей, равное степени параллелизма, где каждый диапазон по оценке должен покрывать примерно одинаковое число строк. Например, если в таблице 4 миллиона строк, а степень параллелизма равна 4, координирующий поток определит ключевые значения, ограничивающие четыре набора строк по миллиону каждый. Если для использования всех ЦП невозможно установить достаточное число диапазонов ключей, степень параллелизма соответствующим образом снижается.
- Координирующий поток запускает число потоков, равное степени параллелизма операций, и ожидает завершения работы этих потоков. Каждый из потоков просматривает базовую таблицу, используя фильтр, извлекающий только строки с ключевыми значениями в пределах диапазона, назначенного данному потоку. Каждый поток выполняет построение индексной структуры для строк в своем диапазоне ключей. В случае секционированного индекса каждый из потоков выполняет построение указанного числа секций. Одни и те же секции между несколькими потоками не разделяются. Дополнительные сведения о построении индекса см. в разделе База данных tempdb и создание индекса.
- После завершения работы всех параллельных потоков координирующий поток связывает компоненты индекса в единый индекс. Эта фаза применяется только для автономных индексных операций.
В отдельных инструкциях CREATE TABLE или ALTER TABLE могут содержаться несколько ограничений, требующих создания индекса. Такие множественные операции по созданию индекса выполняются последовательно, хотя каждая из них может быть параллельной операцией на многопроцессорном компьютере.
См. также
Основные понятия
База данных tempdb и создание индекса
Настройка параллельных индексных операций
Степень параллелизма
Другие ресурсы
ALTER INDEX (Transact-SQL)
CREATE INDEX (Transact-SQL)
DROP INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)