powered by simpleCommunicator - 2.0.43     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / реиндекс секционированной таблицы
10 сообщений из 10, страница 1 из 1
реиндекс секционированной таблицы
    #35604732
Nailbomb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем привет! есть секционировнная таблица и кластерный индекс на ней.
можно ли ребилднуть индекс только у определенной секции, не трогая остальные при включенном ONLINE = ON)?
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35604831
-=DiM@n=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BOL
Индексы, в том числе индексы глобальных временных таблиц, могут быть перестроены в оперативном режиме со следующими исключениями:

отключенные индексы;


XML-индексы;


индексы локальных временных таблиц;


секционированные индексы;


кластеризованные индексы, если базовая таблица содержит типы данных LOB;


некластеризованные индексы, определенные со столбцами типа данных LOB.
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35604879
Nailbomb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=DiM@n=-, спасибо.

тогда вопрос - можно ли ребилднуть секционированный индекс только у определенной секции таблицы, чтобы остальные секции при этом не лочились? в BOL ответа не нашел
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35604927
mike909
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nailbomb-=DiM@n=-, спасибо.

тогда вопрос - можно ли ребилднуть секционированный индекс только у определенной секции таблицы, чтобы остальные секции при этом не лочились? в BOL ответа не нашел

Если задача стоит в том чтобы перестроить индекс у огромной секционированной таблицы, с минимальным гемором для юзверей, то можно сделать следующие финты ушами ж-(

1) Переименовываем старую таблицу
2) создаем новую секционированную таблицу в той-же схеме секционирования
3) создаем в ней нужные (новые/какие хотим получить) индексы
4) создаем въюху (старая таблица union ALL новая таблица) с именем сатрой таблицы ...
5) создаем простую таблицу со сатрой структурой (не забыть наложить constraint'ы по секции)
6) switch'им одну секцию в простую таблицу
7) перестраиваем индекс(ы) - Удаляем нужные перестаиваем ненужные (шутка)
8) switch'им простую таблицу в новую
9) если не все секции так перелопатили то goto (5)
10) Удаляем въюху и старую таблицу (она уже пустая)
11) Переименовываем новую ...
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35605145
Nailbomb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mike909, большое спасибо. именно это меня и интересовало.
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35605282
Nailbomb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
апну тему.
в МСДН есть интересное высказываение:
http://msdn.microsoft.com/ru-ru/library/ms190787.aspx

MSDNКогда применяется секционирование, такие операции обслуживания, как перестроение индекса и дефрагментация, можно выполнять, например только для одного месяца и данных, доступных только для записи, сохраняя оперативный доступ к данным, доступным только для чтения.


но нет примера как это сделать. кто-то сможет обьяснить на пальцах что имелось в виду?
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35777992
Kartas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alter table .. switch нужной секции в таблицу с такой же структурой и индексами, ребилд индексов в новой таблице, switch назад
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35780247
mike909
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kartasalter table .. switch нужной секции в таблицу с такой же структурой и индексами, ребилд индексов в новой таблице, switch назад

А еще не забыть наложить по полю секционирования Constraint на эту таблицу.
Или, как вариант, использовать для этих целей секционированную таблицу в той-же схеме секционирования.
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35790514
russish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не хочу новую тему создавать:
Кто подскажет, из чего складывается время переключения секций из таблицы в таблицу.
Есть две таблицы, одна "архивная" которая содержит секции (файловые группы) за последние 4 года, секции разбиты по месячно (т.е. по дате) и есть таблица, которая содержит текущий и предыдущий месяц. На таблицах навешаны секционированные индексы и constraint'ы на дату.

Таблицы достаточно большие (сотни млрд. записей в архивной и 1 млрд. в двухмесячной).
Сейчас переключение занимает около 1 часа. Вроде как заявлено, что должны затрагиваться только метаданные. Или констрейты перепроверяются?
...
Рейтинг: 0 / 0
реиндекс секционированной таблицы
    #35791086
mike909
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
russishНе хочу новую тему создавать:
Кто подскажет, из чего складывается время переключения секций из таблицы в таблицу.
Есть две таблицы, одна "архивная" которая содержит секции (файловые группы) за последние 4 года, секции разбиты по месячно (т.е. по дате) и есть таблица, которая содержит текущий и предыдущий месяц. На таблицах навешаны секционированные индексы и constraint'ы на дату.

Таблицы достаточно большие (сотни млрд. записей в архивной и 1 млрд. в двухмесячной).
Сейчас переключение занимает около 1 часа. Вроде как заявлено, что должны затрагиваться только метаданные. Или констрейты перепроверяются?

Для переключения секции должны быть выровнены или целевая должна быть больше, по функции секционирования. Само переключение проходит практически мгновено.
Скорее всего после переключения Вы выполняете операцию "MERGE RANGE", которая и жрет все время на перестройку индексов.
Для ускорения можно попробовать сделать следующее.
1) Переключаем секции в промежуточную секционированную таблицу
2) Дропаем все индексы
3) Проводим "MERGE RANGE". -> Должен пролететь практически мгновенно.
4) Строим индексы
5) Переключаем секции в целевую.

Сам так не делаю, предпочитаю не трогать границы т.к. если операция "MERGE RANGE" ведет себя также как и "SPLIT RANGE" - блокировка метаданных на время операции, то лучше этого не делать.
С ужасом вспоминаю как под новый год сбойнула автоматика по расширению секционированной таблицы и операция "SPLIT RANGE" шла около недели перетаскивая данные из секции в секцию. При этом БД была просто недоступна...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / реиндекс секционированной таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]