sql >> Databáze >  >> RDS >> Oracle

co jsou materializované názory v orákulu?

Co jsou materializovaná zobrazení v oracle

Materializovaný pohled je databázový objekt, který obsahuje výsledky dotazu. Je to odlišné od jednoduchého pohledu věštce. Tyto materializované pohledy mají uložená data a když se dotazujete na materializovaný pohled, vrátí data z uložených dat. Klauzule FROM dotazu může pojmenovávat tabulky, pohledy a další materializované pohledy. Souhrnně se tyto objekty nazývají hlavní tabulky (replikační termín) nebo podrobné tabulky (termín datového skladu). Tento odkaz používá „hlavní tabulky“ pro konzistenci. Databáze obsahující hlavní tabulky se nazývají hlavní databáze.

Když vytvoříte materializovaný pohled, Oracle Database vytvoří jednu interní tabulku a alespoň jeden Oracle index a může vytvořit jeden pohled, vše ve schématu materializovaného pohledu. Oracle Database používá tyto objekty k udržování dat materializovaného pohledu. Musíte mít oprávnění nezbytná k vytvoření těchto objektů.

Oprávnění požadovaná k vytvoření materializovaného zobrazení

Uživatel musí mít VYTVOŘIT MATERIALIZOVANÉ ZOBRAZENÍ k vytvoření materializovaného pohledu

Obecná syntaxe

CREATE MATERIALIZED VIEW
BUILD [IMMEDIATE | DEFERRED]
REFRESH [FAST | COMPLETE | FORCE ]
ON [COMMIT | DEMAND ]
[[ENABLE | DISABLE] QUERY REWRITE]
[ON PREBUILT TABLE]
AS
;

Vysvětlení každého termínu

POSTAVIT [OKAMŽITĚ | ODLOŽENO] Můžeme zadat, aby se naplnilo okamžitě, nebo můžeme zadat ODLOŽENÉ, aby se naplnilo při prvním požadovaném obnovení.
OBNOVIT [RYCHLE | KOMPLETNÍ | FORCE ] Jsou zde tři možnosti. Každá je vysvětlena níže

1) FAST :Pokus o rychlé obnovení. Pokud protokoly materializovaných pohledů nejsou u zdrojových tabulek předem přítomny, vytvoření se nezdaří.


2) DOKONČENO :Segment tabulky podporující materializovaný pohled je zkrácen a kompletně znovu vyplněn pomocí přidruženého dotazu.


3) FORCE:Pokus o rychlé obnovení. Pokud to není možné, provede se úplné obnovení.

ZAPNUTO [POTVRDIT | POPTÁVKA ] Můžeme zadat ON COMMIT, aby  obnovení bylo spuštěno potvrzenou změnou dat v jedné ze závislých tabulek. Nebo můžeme zadat ON DEMAND, aby   obnovení bylo zahájeno ručním požadavkem nebo naplánovanou úlohou.
[[POVOLIT | ZAKÁZAT] PŘEPIS DOTAHU] Výběr je vhodný pro přepsání dotazu
CREATE MATERIALIZED VIEW mv_test
BUILD IMMEDIATE
REFRESH complete
ON demand AS
SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP,DEPT
where EMP.DEPTNO= DEPT.DEPTNO;

Obnovení materializovaného zobrazení

Materializovaný pohled můžeme obnovit pomocí PLSQL balíčku DBMS_MVIEW

Balíček DBMS_MVIEW obsahuje tři rozhraní API pro provádění operací obnovení:

DBMS_MVIEW.REFRESH

Obnovte jeden nebo více zhmotněných pohledů.

DBMS_MVIEW.REFRESH_ALL_MVIEWS

Obnovte všechna zhmotněná zobrazení.

DBMS_MVIEW.REFRESH_DEPENDENT

Obnovte všechny materializované pohledy, které závisí na zadané hlavní tabulce nebo materializovaném pohledu nebo seznamu hlavních tabulek nebo materializovaných pohledů.

EXECUTE DBMS_MVIEW.REFRESH('MV_TEST','C');
Here C stands for Complete refresh

Pokud se pokusíte provést rychlou aktualizaci, použijte níže uvedený příkaz

EXECUTE DBMS_MVIEW.REFRESH('MV_TEST','F');
Here F stands for fast Refresh

Vyvolá chybu, protože neexistuje žádný materializovaný protokol zobrazení. budeme kontrolovat materializovaný protokol zobrazení níže

S Oracle 12c zavedl Oracle nové API DBMS_SYNC_REFRESH pro obnovení

Co je Oracle Materialized View Log

Když jsou provedeny změny DML v datech hlavní tabulky, Oracle Database uloží řádky popisující tyto změny do protokolu materializovaného zobrazení a poté použije protokol materializovaného pohledu k aktualizaci materializovaných pohledů na základě hlavní tabulky. Tento proces se nazývá přírůstkové nebo rychlé obnovení. Bez protokolu materializovaného pohledu musí Oracle Database znovu provést dotaz na materializovaný pohled, aby se materializovaný pohled obnovil. Tento proces se nazývá úplné obnovení. Rychlé obnovení obvykle trvá méně času než úplné obnovení.

Protokol materializovaného pohledu je umístěn v hlavní databázi ve stejném schématu jako hlavní tabulka. Hlavní tabulka může mít definovaný pouze jeden protokol materializovaného pohledu. Oracle Database může tento protokol materializovaných pohledů použít k rychlému obnovení všech rychle se obnovitelných materializovaných pohledů na základě hlavní tabulky.

Chcete-li rychle aktualizovat zobrazení materializovaného spojení, musíte vytvořit protokol materializovaného zobrazení pro každou z tabulek, na které odkazuje materializovaný pohled.

Obnovit skupinu

Obnovovací skupina je kolekce jednoho nebo více materializovaných pohledů, které Oracle obnovuje v atomické transakci, což zaručuje zachování vztahů mezi hlavními tabulkami

Příklady:

CREATE MATERIALIZED VIEW mv_test
TABLESPACE test_data
BUILD IMMEDIATE
REFRESH complete ON COMMIT AS
SELECT a.name,b.salary FROM [email protected]_LINK a, [email protected]_LINK b where a.emp_id=b.emp_id;CREATE MATERIALIZED VIEW mv_test
TABLESPACE test_data
BUILD IMMEDIATE
REFRESH force ON COMMIT AS
SELECT a.name,b.salary FROM [email protected]_LINK a, [email protected]_LINK b where a.emp_id=b.emp_id;CREATE MATERIALIZED VIEW LOG ON emp;exec DBMS_REFRESH.MAKE(name=>'test_grp', -
list=>'test_mv1,test_mv2','mv_test' -
next_date => sysdate, -
interval => 'null');

exec DBMS_REFRESH.REFRESH('test_grp');

 

Jak zkontrolovat stav materializovaného zobrazení

SELECT MVIEW_NAME, STALENESS, LAST_REFRESH_TYPE, COMPILE_STATE
FROM USER_MVIEWS ORDER BY MVIEW_NAME;

 

Možnost aktualizace mimo místo pro materializované zobrazení

S 12c Release 1 je k dispozici nová možnost aktualizace, která zlepšuje výkon a dostupnost aktualizace materializovaného zobrazení. Tato možnost aktualizace se nazývá aktualizace mimo místo, protože během aktualizace používá vnější tabulky, na rozdíl od stávající aktualizace „na místě“, která přímo aplikuje změny na tabulku kontejneru materializovaného pohledu. Možnost aktualizace mimo místo funguje se všemi existujícími metodami obnovy, jako je FAST ('F'), COMPLETE ('C'), PCT ('P') a FORCE ('?').

Obnovení mimo místo je zvláště účinné při řešení situací s velkým množstvím změn dat, kde konvenční příkazy DML nejsou dobře škálovatelné. Umožňuje vám také dosáhnout velmi vysokého stupně dostupnosti, protože zhmotněné pohledy, které se obnovují, lze použít pro přímý přístup a přepis dotazů během provádění příkazů obnovení.

Při aktualizaci mimo místo jsou celé nebo ovlivněné části materializovaného pohledu započítány do jedné nebo více vnějších tabulek.

exec dbms_mview.refresh('MV_TEST', out_of_place=>true, atomic_refresh=>false)
;

Rozdíl mezi Materialized View a Oracle View

Jak je vysvětleno výše Materializované pohledy jsou založeny na disku a jsou pravidelně aktualizovány na základě definice dotazu. V materializovaném zobrazení je sada výsledků uložena v tabulce materializovaného zobrazení

Zobrazení jsou pouze virtuální a spouštějí definici dotazu při každém přístupu k nim. V zobrazení není uložena žádná sada výsledků  a při každém přístupu k zobrazení přistupuje k podkladové tabulce

Také čte
Oracle Joins
Poddotazy Oracle
https://en.wikipedia.org/wiki/Materialized_view


  1. Důležitost dobrého návrhu databáze (a 7 kroků k jeho dosažení)

  2. MySQL – různé metody, jak poznat aktuálního uživatele

  3. Použití unie a pořadí podle klauzule v mysql

  4. Jak předat data z aktivity do třídy Java