Oracle - что происходит при обновлении представления «REFRESH FORCE ON DEMAND» с помощью DBMS_MVIEW.REFRESH - PullRequest
4 голосов
/ 14 июня 2011

У меня есть следующий материализованный вид -

CREATE MATERIALIZED VIEW TESTRESULT 
ON PREBUILT TABLE WITH REDUCED PRECISION
REFRESH FORCE ON DEMAND
WITH PRIMARY KEY
AS 
SELECT...
FROM...
WHERE...

Этот материализованный вид не имеет подкрепления.Как видно из вышеприведенного пункта, этот MV имеет "ON DEMAND", и, согласно документации Oracle,

"[ON DEMAND] указывает [s], что материализованное представление будет обновляться по требованию путем вызоваодна из трех процедур обновления DBMS_MVIEW. "

Когда я вызываю DBMS_MVIEW.REFRESH ('TESTRESULT'), что происходит?Проверяется ли вручную каждая запись, чтобы убедиться, что она обновлена?

Версия Oracle: 10g

1 Ответ

6 голосов
/ 15 июня 2011

По умолчанию (и это значение по умолчанию изменяется в разных версиях Oracle), которое будет выполнять полное атомарное обновление материализованного представления. Это означает, что данные в материализованном представлении будут удалены, базовый запрос будет выполнен повторно, а результаты будут загружены в материализованное представление. Вы можете сделать обновление более эффективным, передав значение FALSE для параметра ATOMIC_REFRESH, т.е.

dbms_mview.refresh( 'TESTRESULT', atomic_refresh => false );

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...