Создание индекса для действительно занятой таблицы

11

У нас есть таблица с большим количеством insert\selectкаждый раз (например, 100 машин, которые вставляют \ обновляют каждую секунду).

Каков наилучший способ создания индекса для таблицы, который нельзя заблокировать ни на секунду?

Если я создаю индекс, я уверен, что он заблокирует запросы, и я не могу это сделать.

Это большая таблица с 1 миллионом строк +.

Racer SQL
источник

Ответы:

12

Нет такой опции как CREATE INDEX WITH (NOLOCK)(и даже NOLOCKна запрос уходит блокировка, только меньше, чем без подсказки).

Лучшее, что вы собираетесь сделать, это то WITH (ONLINE = ON), что он по-прежнему блокируется в начале и в конце операции (оба относятся к перекомпиляции планов, связанных с таблицей - см. Этот пост в блоге Пола Рэндала для более подробной информации ).

Это значительно снизит влияние построения индекса на ваши приложения, но не существует практического способа полностью устранить это влияние. Кроме того, эта функция не является бесплатной: для нее требуется Enterprise Edition.

Аарон Бертран
источник