Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РСБДтЗ / Курс лекций РСБДиЗ.doc
Скачиваний:
135
Добавлен:
05.03.2016
Размер:
1.63 Mб
Скачать

Способ обновления

Существует два основных способа обновления материализованных представлений

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

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

drop materialized view v3;

create materialized view v3 build immediate refresh complete as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1 having count(*) > 1;

insert into h1(n, s, n1, s1) values(-1, 'aaa', -1, 'aaa');

insert into h1(n, s, n1, s1) values(-2, 'aaa', -2, 'aaa');

commit;

exec dbms_mview.refresh('v3');

select * from v3;

drop materialized view v3;

create materialized view v3 refresh fast as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1 having count(*) > 1;

create materialized view v3 refresh fast as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1;

create materialized view v3 refresh fast as select h1.s1 s1, avg(n1) n, count(h1.n1) n1 from h1 group by s1;

create materialized view v3 refresh fast as select h1.s1 s1, avg(n1) n from h1 group by s1;

create materialized view log on h1 nologging with sequence, rowid (n1, s1) including new values;

create materialized view log on h2 nologging with sequence, rowid (n1, s1) including new values;

drop materialized view v3;

create materialized view v3 refresh fast on commit as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1;

insert into h1(n, s, n1, s1) values(-11, 'aaa1', -11, 'aaa1');

insert into h1(n, s, n1, s1) values(-21, 'aaa1', -21, 'aaa1');

commit;

exec dbms_mview.explain_mview('v3', '2');

select * from mv_capabilities_table where statement_id = 2;

drop materialized view v3;

exec dbms_mview.explain_mview('select h1.s1 s1, count(h1.n1) n1 from h1 group by s1', '4');

select * from mv_capabilities_table where statement_id = 4;

select * from user_segments where segment_name like 'MLOG%';

select * from user_mview_logs;

drop materialized view log on h1;

drop materialized view log on h2;

create materialized view log on h1 nologging with sequence, rowid (n, n1, s1) including new values;

create materialized view log on h2 nologging with sequence, rowid (n, n1, s1) including new values;

truncate table mv_capabilities_table;

exec dbms_mview.explain_mview('select h1.s1 s1, h2.s1 s2, h1.n n from h1, h2 where h1.n = h2.n', '5');

select * from mv_capabilities_table where statement_id = 5;

truncate table mv_capabilities_table;

exec dbms_mview.explain_mview('select h1.rowid h1_rowid, h2.rowid h2_rowid, h1.s1 s1, h2.s1 s2, h1.n n from h1, h2 where h1.n = h2.n', '5');

select * from mv_capabilities_table where statement_id = 5;

drop materialized view v3;

create materialized view v3 refresh fast as select h1.s1 s1, h2.s1 s2, h1.n n from h1, h2 where h1.n = h2.n;

create materialized view v3 refresh fast as select h1.rowid h1_rowid, h2.rowid h2_rowid, h1.s1 s1, h2.s1 s2, h1.n n from h1, h2 where h1.n = h2.n;

create materialized view v3 refresh fast on commit as select h1.s1 s1, h2.s1 s2, h1.n n from h1, h2 where h1.n = h2.n;

create materialized view v3 refresh fast on commit as select h1.rowid h1_rowid, h2.rowid h2_rowid, h1.s1 s1, h2.s1 s2, h1.n n from h1, h2 where h1.n = h2.n;

Листинг 12.7. (html, txt)

91

Соседние файлы в папке РСБДтЗ