В чем разница между полным обновлением и быстрым обновлением в материализованном представлении?

У меня есть материализованное представление в моей собственной схеме, а источником материализованного представления является другая таблица схемы, но эта основная таблица имеет 900 строк, и я выполнил некоторые операции с dml в этой главной таблице, после чего я обновлю это материализованное представление, как вы знаете, и я провел некоторый повторный поиск «как я могу обновить свое собственное материализованное представление», и в нем говорится: «вы можете выполнить полное или быстрое обновление», но я не понял этих решений, что означает, поэтому мой вопрос прост;

В чем разница между полным обновлением и быстрым обновлением в MV?

P.S: Если в моей главной таблице 1 миллион или более строк, какую из них я должен выбрать? (быстро или полностью)

Спасибо за ваш ответ.


person MFARKAN    schedule 04.01.2017    source источник
comment
Вы пробовали читать документацию Oracle? Быстрое обновление всегда предпочтительнее, но оно имеет много условий / требований; вы должны проверить, выполняются ли они. Полное обновление означает, что все представление рассчитывается с нуля и может занять много времени. Быстрое обновление означает, что пересчитываются только затронутые строки - иногда эта концепция даже не имеет смысла (в этом случае представление не будет быстро обновляться). docs.oracle.com/database/121/DWHSG/refresh.htm# DWHSG015   -  person mathguy    schedule 04.01.2017
comment
Документация и поиск в Google помогли бы вам понять это.   -  person XING    schedule 04.01.2017
comment
Я читал документ, но не понял, о чем они говорят :). Спасибо за ответ :) Это полезно :)   -  person MFARKAN    schedule 05.01.2017


Ответы (2)


«Полное обновление» означает, что вы усекаете все материализованное представление и вставляете новые данные.

«Быстрое обновление» означает, что вы обновляете (или вставляете / удаляете) только те строки, которые были изменены в главных таблицах.

И так же, как информация «Принудительное обновление» означает, что Oracle пытается выполнить быстрое обновление, а если это невозможно, то выполнить «полное обновление».

Обычно быстрое обновление выполняется намного быстрее, чем полное обновление, но оно имеет ограничения. Вы должны определить MATERIALIZED VIEW LOG в основных таблицах.

Вот полный список ограничений. Общие ограничения на быстрое обновление, их довольно много.

person Wernfried Domscheit    schedule 04.01.2017
comment
Спасибо за ваш ответ ! Я понимаю :) - person MFARKAN; 05.01.2017
comment
Если мы просто вызовем DBMS_MVIEW.REFRESH('m_view_name' );, какой из них будет запущен? - person mcvkr; 02.06.2017
comment
Это зависит от того, как был создан MView. Вы не можете установить его во время обновления. - person Wernfried Domscheit; 02.06.2017

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

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

person ewramner    schedule 04.01.2017