http://blogs.technet.com/lyudmila_fokina/archive/2006/09/30/460034.aspx
Людмила Фокина
Схематично параллельный план построения индекса для высокопроизводительных машин можно представить следующим образом:
X
/
|
\
Построитель… Построитель … Построитель …
\
|
/
Обмен/Слияние
/ | \
Сортировка… Сортировка … Сортировка …
|
| |
Сканирование
Сканирование Сканирование
Этот план параллельного построения индексов выбирается обработчиком запросов когда выполняются следующие условия:
1)
Уровень
параллелизма (DOP – Degree of parallelism) – число процессоров, которые могут
быть использованны для построения индекса > 8;
2)
Доступна
статистика;
3)
Достаточно
памяти (правило следующее: память необходимая для построения индекса должна
составлять < 3% от общей памяти доступной обработчику запросов, при этом
минимальная память необходимая для построения индекса = минимальная память на
одну сортировочную структуру * число сортировочных структур.)
Как работает этот план?
Каждый исполнитель сканирует страницу данных их кучи
параллельно. Когда один из исполнителей заканчивает очередную страницу,
обработчик запросов получает следующую страницу данных. Порядок сканирования
страниц каждым исполнителем в данном случае не важен и, как результат,
исполнители не простаивают в ожидании следующей страницы данных (сравните с
планом для машин малой мощности, где порядок сканирования важен и каждый
исполнитель сканирует только предназначенные ему секции). Дополнительным
преимуществом является то, что базовый объект сканируется один раз (сравните с
планом для машин малой мощности, где объект сканируется несколько раз).
После завершения сканирования создаются и заполняются #DOP
сортировочных структур для каждого исполнителя.
В конце фазы сортировки и перед тем как начать вставлять данные
в дерево индекса обработчик запросов производит «обмен» структур сортировки
между исполнителями таким образом, что каждый исполнитель получает свой
диапазон (интервал) данных, после чего происходит слияние структур сортировки.
После того как «обмен» завершен, каждый исполнитель строит свое собственное дерево и координирующий процесс осуществляет «сшивку» всех деревьев в общее дерево индекса (также как при использовании плана для машин малой мощности).
Выигрыш в производительности достигается здесь за счет того, что не приходиться сканировать целиком весь объект для каждого исполнителя, но в то же время некоторые потери производительности происходят из-за дополнительного обмена данными между исполнителями. Также (повторюсь) этот план требует больше памяти для своего исполнения.
В следующих сообщениях:
- План для индексирования представления;
- Требования к памяти при параллельном
построении индексов;
...
Комментариев нет:
Отправить комментарий