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

Откуда:
Сообщений: 3
Добрый день!
У меня есть 2 идентичные таблицы - рабочая и архив, обе секционированы по одному признаку. В обоих таблицах индексы секционированы и выровнены. Но сами индексы между 2-мя таблицами немного отличаются, и количество их неодинаково.

Вопрос в следующем. Для переключения секции из одной таблицы в другую обязательно все индексы в обоих таблицах должны совпадать?

В Books Online я читал, что для переключения надо, чтобы индексы, которые есть в результирующей таблице, были и в исходной таблице. Но тогда куда денутся индексы переключаемой секции, которые есть в исходной таблице, но их нет в результирующей...
Спасибо.
9 янв 12, 15:47    [11874357]     Ответить | Цитировать Сообщить модератору
 Re: Идентичность индексов в таблицах при переключении секций  [new]
mike909
Member

Откуда:
Сообщений: 662
breeze_1076
Добрый день!
У меня есть 2 идентичные таблицы - рабочая и архив, обе секционированы по одному признаку.

Это как ?
Варианты ответа:
1) Тип поля секционирования один и тот же
2) Используется одна и таже функция секционирования
3) Используется одна и таже схема секционирования

breeze_1076
В обоих таблицах индексы секционированы и выровнены. Но сами индексы между 2-мя таблицами немного отличаются, и количество их неодинаково.

Вопрос в следующем. Для переключения секции из одной таблицы в другую обязательно все индексы в обоих таблицах должны совпадать?

Совершенно верно - должны...
breeze_1076
Но тогда куда денутся индексы переключаемой секции, которые есть в исходной таблице, но их нет в результирующей...

Никуда не денутся - операция switch не выполнится с соответствующей ошибкой.
В Вашем случае нужно переключать так:
Для варианта 3 (при условии что секция целевой таблицы - пустая):
1) Создать секционированную таблицу идентичную исходной (структура и индексы)
2) Переключить выбранную секцию исходной таблицы в созданную
3) Грохнуть все индексы в созданной таблице
4) Создать индексы в созданной таблице, идентичные целевой таблице
5) Переключить секцию из созданной таблицы в целевую
6) Грохнуть созданную таблицу.

Для варианта 1 и 2
Действуйте через простую таблицу, созданную в файловой группе переключаемой секции исходной таблицы.
Далее, если файловые группы секций исходной и целевой - разные, то придется перекинуть таблицу из одной файловой группы в другую.
Короче, для варианта 1 и 2 маленькая кучка тонкостей...
9 янв 12, 17:54    [11874844]     Ответить | Цитировать Сообщить модератору
 Re: Идентичность индексов в таблицах при переключении секций  [new]
breeze_1076
Member

Откуда:
Сообщений: 3
Спасибо за ответ.

mike909
Варианты ответа:
1) Тип поля секционирования один и тот же
2) Используется одна и таже функция секционирования
3) Используется одна и таже схема секционирования

Да, таблицы секционированы по одной схеме (вариант 3).

mike909
Никуда не денутся - операция switch не выполнится с соответствующей ошибкой.

Дело в том, что я пробовал на 2-х тестовых таблицах (также с общей схемой) - из первой таблицы переключать секцию во вторую. В первой таблице были индексы такие, как и во второй, плюс еще один индекс (которого нет во второй). И мне переключило молча без ошибок:)
А если наоборот - в первой нет индекса, который есть во второй, то была ошибка.
Почему меня и смутило, почему в первом случае переключило молча :)
9 янв 12, 19:53    [11875373]     Ответить | Цитировать Сообщить модератору
 Re: Идентичность индексов в таблицах при переключении секций  [new]
breeze_1076
Member

Откуда:
Сообщений: 3
breeze_1076
Да, таблицы секционированы по одной схеме (вариант 3).

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

Индексы в тестовых таблицах тоже были секционированы как и их таблицы (по тем же схемам).
9 янв 12, 20:03    [11875394]     Ответить | Цитировать Сообщить модератору
 Re: Идентичность индексов в таблицах при переключении секций  [new]
mike909
Member

Откуда:
Сообщений: 662
breeze_1076
breeze_1076
Да, таблицы секционированы по одной схеме (вариант 3).

Немного не так выразился. Секционированы по одинаковому полю, но функция и схема отличается (т.к. диапазоны секций разные) - одна таблица рабочая, другая - архив.

Значится вариант № 1
breeze_1076
Но обе схемы в одной и той же файловой группе. Т.е. переключать должно без проблем.

Пока целевая секция пуста - проблем не будет
Подозреваю, что Ваша "архивная" таблица имеет секции более "широкие" по полю секционирования, нежели "рабочая" таблица.
Тогда Вам, для успешного переключения следующей секции, потребуется "выровнять" через split секцию в "архивной" таблице а затем слить секции через merge.
Сразу замечу, что операция merge очень тяжелая.
9 янв 12, 21:37    [11875654]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить