http://blogs.technet.com/lyudmila_fokina/archive/2007/05/25/7-1.aspx
Людмила Фокина
В SQL Server 2005 стало возможно строить, перестраивать и удалять* индексы фоновом режиме. Это позволяет проводить текущее обслуживание, не прерывая основной работы. Опция «ONLINE» делает возможным параллельный доступ к данным таблицы/индекса во время построения/перестроения индекса. Например, когда один пользователь перестраивает кластерный индекс, другой пользователь может получать и обновлять данные таблицы, для которой перестраивается индекс. Для сравнения: при автономном построении индекса, построитель индекса держит эксклюзивную блокировку на таблицу и индекс в течение всего времени построения, что не дает получать или обновлять данные таблицы/индекса.
*Операция фонового удаления индекса возможна только для кластерного индекса (см. также «соображения производительности» в следующем сообщении).
Пример:
Create
clustered Index
idx_01 on t_01(c1)
WITH(ONLINE
= ON)
go
Фоновое построение индексов имеет определенные ограничения:
· Если таблица имеет солонки типа: image, ntext,
text, varchar(max), nvarchar(max), varbinary(max), xml - кластерный индекс на
такой таблице может быть построен только в автономном режиме (Offline).
· Неуникальный
некластерный индекс может быть построен в фоновом режиме, если таблица содержит
вышеперечисленные типы данных, но только если эти колонки не являются частью
индекса. Индекс, частью которого являются колонки с такими типами данных должен
строиться в автономном режиме.
· Индексы
на локальных временных таблицах не могут быть построены, перестроены или
удалены в фоновом режиме. Однако, это ограничение не распространяется на
глобальные временные таблицы.
(подробный
список ограничений для фоновых индексных операций см. документацию)
Таблица,
для которой строится (перестраивается, удаляется) индекс не может
модифицироваться (Alter table), удаляться и для нее нельзя выполнять операцию
Truncate во время фоновой индексной операции.
Когда
кластерный индекс таблицы перестраивается, то все не-кластерные индексы,
существующие на той же таблице, также перестраиваются в фоновом режиме.
Когда
уникальный индекс строится в фоновом режиме, построитель индекса и параллельная
пользовательская транзакция (Insert, на пример) могут попытаться добавить
одинаковое значение и, тем самым, нарушить уникальность. Если пользовательская
транзакция успеет добавить неуникальное значение раньше, чем индекс для этого
участка таблицы построен, операция построения индекса завершится с сообщением
об имеющихся дубликатах и индекс построен не будет.
Комментариев нет:
Отправить комментарий