Можно ли создать индекс "в фоне"?
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 28.12.14 11:01
Оценка:
Захотелось мне тут добавить индекс к таблице. Таблица довольно большая -- десятки-сотни миллионов строк, создание индекса потребует немало времени.

Ситуация осложняется тем, что база в Azure (Azure-версия MS SQL Server), всё это в продакшне и под нагрузкой. Нагрузка там совсем смешная и какой-то простой вполне допустим, но тем не менее, база не должна пропадать более чем на несколько минут — с ней круглосуточно работают люди.

Возможно ли запустить создание индекса "в фоне", с низким приоритетом и так, чтоб таблица не блокировалась во время создания этого индекса? Если оно будет создаваться неделю или две в фоне — меня это устроит. Главное чтоб таблица не блокировалась ни на чтение, ни на запись (ежедневно база получает обновления).

Сама операция создания индекса вроде не блокирует чтение из таблицы, так? Но вот временной лимит на выполнение запроса в Azure — 10 минут, после этого сервер принудительно закрывает соединение. 10 минут явно не хватит на создание индекса. Как-нибудь обойти этот лимит можно?

Пока в голову приходят только какие-то способы с созданием временных таблиц, копированием и переносом данных между этими таблицами по частям.. А какого-нибудь простого способа нет?
С уважением, Artem Korneev.
Re: Можно ли создать индекс "в фоне"?
От: Ромашка Украина  
Дата: 28.12.14 11:45
Оценка: 6 (1) +1
Здравствуйте, Artem Korneev, Вы писали:
AK>А какого-нибудь простого способа нет?

create index blablabla with (online=on)


Всё, что нас не убивает, ещё горько об этом пожалеет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.