Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Построение нескольких индексов параллельно.  [new]
KostaRico
Member

Откуда:
Сообщений: 67
Всем привет!

SQL Server 2008 (даже не R2)
Есть способы ускорить параллельное построение индексов на большой таблице?
У меня строится одновременно 5 индексов (в разные файл группы) и все они, естественно, читают всю таблицу. А еще даже парочка может стоять в очереди на memory grant.

Я знаю что в новых версиях запросы могут присоединяться к уже текущему table scan, но это не мой случай...
28 окт 15, 09:16    [18335973]     Ответить | Цитировать Сообщить модератору
 Re: Построение нескольких индексов параллельно.  [new]
aleks2
Guest
KostaRico
Есть способы ускорить параллельное построение индексов на большой таблице?

Канешно есть. Строить последовательно.
28 окт 15, 09:33    [18336053]     Ответить | Цитировать Сообщить модератору
 Re: Построение нескольких индексов параллельно.  [new]
KostaRico
Member

Откуда:
Сообщений: 67
aleks2,

Это может быть быстрее, чем параллельно?
28 окт 15, 10:35    [18336312]     Ответить | Цитировать Сообщить модератору
 Re: Построение нескольких индексов параллельно.  [new]
Eleanor
Member

Откуда:
Сообщений: 3424
Может там есть индексы, которые могут сканировать другие созданные индексы, а не table scan? Последовательно будет быстрее.
28 окт 15, 11:24    [18336626]     Ответить | Цитировать Сообщить модератору
 Re: Построение нескольких индексов параллельно.  [new]
KostaRico
Member

Откуда:
Сообщений: 67
Eleanor,
Индексы строятся на heap таблице, до этого никаких индексов нет.
28 окт 15, 11:39    [18336742]     Ответить | Цитировать Сообщить модератору
 Re: Построение нескольких индексов параллельно.  [new]
Eleanor
Member

Откуда:
Сообщений: 3424
Допустим, вы сейчас параллельно создаете индексы с полями
1) с
2) b
3) a, b, c
Все они сканируют таблицу.

А если последовательно создать сначала индекс 3), а потом 1), 2), то они будут сканировать уже созданный индекс 3), а не целую таблицу

Структура вашей таблицы такого не позволяет?
28 окт 15, 11:56    [18336855]     Ответить | Цитировать Сообщить модератору
 Re: Построение нескольких индексов параллельно.  [new]
KostaRico
Member

Откуда:
Сообщений: 67
Eleanor,
Да, идея понятна, но у меня все поля разные. (a), (b), (c), (e,f)
Если только попробовать в индекс (e,f) добавить остальные как включаемые.
28 окт 15, 12:04    [18336913]     Ответить | Цитировать Сообщить модератору
 Re: Построение нескольких индексов параллельно.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
KostaRico,

Если у вас объем доступной памяти меньше чем размер таблицы, то все эти запросы будет бороться за буфер, вытесняя данные других запросов. Да и в зависимости от дисковой подсистемы, может получится так, что параллельные ребилды индексов заставят диски читать данные постоянно с разных мест, что тоже не увеличит скорость. А вообще, неужели так сложно протестировать параллельно vs последовательно и сравнить?
30 окт 15, 00:50    [18346832]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить