2016-11-15 12 views
1

У меня есть процесс ETL, который загружает данные в целевую таблицу A. Мы создали другую таблицу B, которая аналогична целевой таблице в структуре , и к этой таблице обращается команда отчетности генерировать отчеты. Теперь, когда данные загружаются в целевую таблицу A, вызывается хранимая процедура, чтобы переименовать таблицу B в виде таблицы Temp, таблицу B как таблицу A и таблицу A в качестве таблицы Temp. Это делается для минимизации времени простоя для создания отчетов.Разница между переименованием и обменом разделами

Таким образом, отчеты всегда получают доступ к последним данным. Теперь я задаю вопрос, могу ли я создать раздел в таблице B и использовать механизм обмена Exchange для обмена сегментами A и секционированной таблицы B. Итак, вы можете сказать мне, что является лучшим подходом и насколько отличается обменный раздел от переименования таблицы.

+0

@George Можно ли иметь два раздела Р1 и Р2 на данных целевой таблицы и процесс ETL нагрузки в patition P1 целевой таблицы, а затем с помощью обмена раздела можно поменять местами раздела P2 с раздела P1. P1 wl используется для ETL, а P2 будет использоваться для отчетности ... Является ли эта конструкция чем-то возможной с использованием механизма Exchange Partition? – Dex

ответ

0

Концептуально они одинаковы. Изменены только метаданные. Однако используя обменный раздел. 1. У вас есть возможность собирать статистику по разделу (меньшее подмножество по сравнению с полной таблицей). 2. Архивирование старых данных становится проще. (Вы можете архивировать разделы старше 3 лет, например)

Для получения дополнительной информации вы можете проверить следующую ссылку на asktom.

https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:1238800184155,%7Bpartitions%7D

1

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

Другим преимуществом метода разделения Exchange является то, что таблицы A и B могут иметь разные гранты: A - целевая таблица с чтением грантов конечным пользователям, B - промежуточная таблица, доступная только приложением.

У них также могут быть разные индексы - B вообще не требует индексов.

В таблице A могут храниться все исторические данные (в разделах), а B содержит только сформированные в настоящее время промежуточные данные (не секционированные).

+0

Согласен, и если у меня есть параметр «Разделение», я бы предпочел обменный раздел, даже если секционированная таблица имеет только один раздел. –

0

Я думаю, что вы должны понимать, что таблица представляет собой объект с набором логических метаданных (имя, гранты и т. Д.) В сочетании с объектом данных (и метаданные объекта данных, такие как количество строк и другие статистические данные).

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

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

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

p.s. Используя эту метафору, вы также можете считать объект представления логически почти таким же, как и объект таблицы, поскольку оба они имеют одинаковые логические метаданные. Разумеется, представление не имеет объекта данных и вместо этого содержит дополнительные метаданные для определения его базового отношения.

Материализованные виды также напоминают таблицы с дополнительными метаданными (аналогичными представлениям) и дополнительными метаданными для обновления.

Таблица с созданием отложенного сегмента - это объект таблицы, для которого объект данных еще не создан.

т.д.