sql >> Database teknologi >  >> RDS >> Oracle

hvad er materialiserede synspunkter i oracle?

Hvad er materialiserede synspunkter i oracle

En materialiseret visning er et databaseobjekt, der indeholder resultaterne af en forespørgsel. Det er forskelligt fra simpelt orakelsyn. Disse materialiserede visninger har data gemt, og når du forespørger på den materialiserede visning, returnerer den data fra de lagrede data. FROM-klausulen i forespørgslen kan navngive tabeller, visninger og andre materialiserede visninger. Tilsammen kaldes disse objekter mastertabeller (et replikeringsudtryk) eller detaljetabeller (et datalagerudtryk). Denne reference bruger "mastertabeller" for at opnå konsistens. De databaser, der indeholder mastertabellerne, kaldes masterdatabaserne.

Når du opretter en materialiseret visning, opretter Oracle Database én intern tabel og mindst ét ​​Oracle-indeks og kan oprette én visning, alt sammen i skemaet for den materialiserede visning. Oracle Database bruger disse objekter til at vedligeholde de materialiserede visningsdata. Du skal have de nødvendige rettigheder for at oprette disse objekter.

Privilegier nødvendige for at skabe materialiseret visning

Brugeren skal have OPRET MATERIALISERET VISNING at skabe materialisere udsigt

Generel syntaks

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

Forklaring af hvert udtryk

BYG [STRAKS | UDSAT] Vi kan angive for at udfylde med det samme. Eller vi kan angive DEFERRED for at udfylde ved den første anmodede opdatering.
OPPDATERING [HURTIGT | KOMPLET | FORCE ] Der er tre muligheder her. Hver forklaret nedenfor

1) HURTIG:En hurtig opdatering er forsøgt. Hvis materialiserede visningslogfiler ikke er til stede mod kildetabellerne på forhånd, mislykkes oprettelsen.


2) Fuldført:Tabelsegmentet, der understøtter den materialiserede visning, afkortes og genudfyldes fuldstændigt ved hjælp af den tilknyttede forespørgsel.


3) FORCE:En hurtig opdatering er forsøgt. Hvis det ikke er muligt, udføres en fuldstændig opdatering.

ON [COMMIT | DEMAND ] Vi kan angive ON COMMIT, så  opdatering udløses af en forpligtet dataændring i en af ​​de afhængige tabeller. Eller vi kan specificere ON DEMAND, så   opdatering startes af en manuel anmodning eller en planlagt opgave.
[[AKTIVER | DEAKTIVER] FORESPØRG OMSKRIV] Visningen er kvalificeret til forespørgselsomskrivning
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;

Materialiseret visningsopdatering

Vi kan opdatere materialiseret visning gennem PLSQL-pakken DBMS_MVIEW

DBMS_MVIEW-pakken indeholder tre API'er til at udføre opdateringshandlinger:

DBMS_MVIEW.REFRESH

Opdater en eller flere materialiserede visninger.

DBMS_MVIEW.REFRESH_ALL_MVIEWS

Opdater alle materialiserede visninger.

DBMS_MVIEW.REFRESH_DEPENDENT

Opdater alle materialiserede visninger, der afhænger af en specificeret mastertabel eller materialiseret visning eller liste over mastertabeller eller materialiserede visninger.

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

Hvis du prøver at lave hurtig opdatering, ved at bruge kommandoen nedenfor

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

Det vil give fejl, da der ikke er nogen materialiseret visningslog. vi vil kontrollere materialiseret visningslog nedenfor

Med Oracle 12c har Oracle introduceret ny API DBMS_SYNC_REFRESH til opdatering

Hvad er Oracle Materialized View Log

Når der foretages DML-ændringer i mastertabeldata, gemmer Oracle Database rækker, der beskriver disse ændringer i den materialiserede visningslog og bruger derefter den materialiserede visningslog til at opdatere materialiserede visninger baseret på mastertabellen. Denne proces kaldes inkrementel eller hurtig opdatering. Uden en materialiseret visningslog skal Oracle Database genudføre den materialiserede visningsforespørgsel for at opdatere den materialiserede visning. Denne proces kaldes en komplet opdatering. Normalt tager en hurtig opdatering kortere tid end en fuldstændig opdatering.

En materialiseret visningslog er placeret i masterdatabasen i samme skema som mastertabellen. En mastertabel kan kun have én materialiseret visningslog defineret på sig. Oracle Database kan bruge denne materialiserede visningslog til at udføre hurtige opdateringer for alle materialiserede visninger, der hurtigt kan opdateres, baseret på mastertabellen.

For hurtigt at opdatere en materialiseret join-visning skal du oprette en materialiseret visningslog for hver af tabellerne, der refereres til af den materialiserede visning.

Opdater gruppe

En opdateringsgruppe er en samling af en eller flere materialiserede visninger, som Oracle opdaterer i en atomtransaktion, hvilket garanterer, at relationer mellem mastertabellerne bevares

Eksempler:

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');

 

Sådan tjekker du status for den materialiserede visning

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

 

Mulighed for opdatering uden for stedet for materialiseret visning

Med 12c Release 1 er en ny opdateringsmulighed tilgængelig for at forbedre ydeevnen og tilgængeligheden af ​​materialiseret visningsopdatering. Denne opdateringsindstilling kaldes opdatering uden for stedet, fordi den bruger eksterne tabeller under opdatering i modsætning til den eksisterende "på stedet" opdatering, der direkte anvender ændringer til den materialiserede visningsbeholdertabel. Opfriskningsmuligheden, der ikke er på stedet, fungerer med alle eksisterende opdateringsmetoder, såsom FAST ('F'), COMPLETE ('C'), PCT ('P') og FORCE ('?').

Out-of-place opdatering er især effektiv, når du håndterer situationer med store mængder dataændringer, hvor konventionelle DML-sætninger ikke skaleres godt. Det giver dig også mulighed for at opnå en meget høj grad af tilgængelighed, fordi de materialiserede visninger, der opdateres, kan bruges til direkte adgang og forespørgselsomskrivning under udførelsen af ​​refresh-sætninger.

Ved udelukket opdatering beregnes hele eller berørte dele af en materialiseret visning til en eller flere eksterne tabeller.

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

Forskellen mellem Materialized View og Oracle View

Som forklaret ovenfor Materialiserede visninger er diskbaserede og opdateres periodisk baseret på forespørgselsdefinitionen. I materialiseret visning gemmes resultatsættet i materialiseret visningstabellen

Visninger er kun virtuelle og kører forespørgselsdefinitionen, hver gang de tilgås. I visningen gemmes intet resultatsæt  og det får adgang til den underliggende tabel, hver gang visningen tilgås

Læser også
Oracle Joins
Oracle-underforespørgsler
https://en.wikipedia.org/wiki/Materialized_view


  1. Sådan genererer du tilføje kolonneerklæring for alle tabellerne i en database i SQL Server - SQL Server / T-SQL selvstudium del 49

  2. Best Practices for MySQL-replikering

  3. Sådan får du året fra en date i T-SQL

  4. Hvad betyder nøgleordet KEY?