Oracle: Должны ли мы перестраивать индексы для материализованного представления, которое было обновлено в неатомарном режиме? - PullRequest
1 голос
/ 30 октября 2019

У нас есть материализованное представление в базе данных Oracle 12c, в настоящее время оно полностью обновляется в неатомарном режиме [atomic_refresh => FALSE и полное обновление]. Кроме того, есть следующий шаг, который явно перестраивает все индексы Mview, который занимает значительное время в обновлении Mview. Является ли это правильным подходом для перестроения всех индексов после обновления Mview в полном режиме и в неатомарном режиме?

1 Ответ

1 голос
/ 30 октября 2019

Если вы можете допустить, что MV в течение некоторого времени пусто, вы используете неатомарное обновление, которое в основном составляет TRUNCATE и (прямое) INSERT APPEND.

У вас есть два варианта с индексами: либо вы отбрасываете их перед обновлением, и заново создаете их после завершения обновления, либо вы позволяете Oracle Oracle выполнять эту работу (с очень похожим эффектом). Усечение сбрасывает индексы в пустое состояние, и последний шаг INSERT APPEND создает их с нуля.

Я бы предпочел использовать второй вариант.

Отдельный шаг перестройка индексов (который может потребоваться для сильно обновленных таблиц с транзакциями с большой продолжительностью) включенMV с неатомарным полным обновлением не требуется.

...