Oracle
 sql >> Baza danych >  >> RDS >> Oracle

co to są zmaterializowane poglądy w wyroczni?

Co to są widoki zmaterializowane w Oracle

Zmaterializowany widok to obiekt bazy danych zawierający wyniki zapytania. Różni się od prostego widoku wyroczni. Te zmaterializowane widoki przechowują dane, a gdy wysyłasz zapytanie do zmaterializowanego widoku, zwraca on dane z przechowywanych danych. Klauzula FROM zapytania może nazywać tabele, widoki i inne zmaterializowane widoki. Łącznie obiekty te nazywane są tabelami głównymi (termin replikacji) lub tabelami szczegółowymi (termin dotyczący hurtowni danych). To odniesienie wykorzystuje „tabele główne” w celu zachowania spójności. Bazy danych zawierające tabele główne nazywane są bazami danych głównych.

Podczas tworzenia widoku zmaterializowanego Oracle Database tworzy jedną tabelę wewnętrzną i co najmniej jeden indeks Oracle, a także może utworzyć jeden widok, wszystkie w schemacie widoku zmaterializowanego. Oracle Database używa tych obiektów do przechowywania zmaterializowanych danych widoku. Musisz mieć uprawnienia niezbędne do tworzenia tych obiektów.

Uprawnienia wymagane do utworzenia widoku zmaterializowanego

Użytkownik musi mieć UTWÓRZ ZMATERIAŁOWANY WIDOK aby utworzyć widok zmaterializowany

Ogólna składnia

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

Wyjaśnienie każdego terminu

BUDUJ [NATYCHMIASTOWE | ODROCZONE] Możemy określić, aby wypełnić natychmiast lub możemy określić DEFERRED, aby wypełnić przy pierwszym żądanym odświeżeniu.
ODŚWIEŻ [SZYBKO | KOMPLETNY | SIŁA ] Istnieją trzy opcje. Każda z nich wyjaśniona poniżej

1) FAST :Podjęto próbę szybkiego odświeżenia. Jeśli dzienniki widoku zmaterializowanego nie są obecne w tabelach źródłowych z wyprzedzeniem, tworzenie nie powiedzie się.


2) COMPLETE :segment tabeli obsługujący widok zmaterializowany jest obcinany i wypełniany całkowicie przy użyciu powiązanego zapytania.


3)FORCE :Podjęto próbę szybkiego odświeżenia. Jeśli nie jest to możliwe, wykonywane jest pełne odświeżenie.

WŁ [ZATWIERDZENIE | ZAPOTRZEBOWANIE] Możemy określić ON COMMIT, aby odświeżanie było wyzwalane przez zatwierdzoną zmianę danych w jednej z tabel zależnych, lub możemy określić NA ŻĄDANIE, aby odświeżanie było inicjowane przez żądanie ręczne lub zaplanowane zadanie.
[[WŁĄCZ | WYŁĄCZ] PRZEPIS ZAPYTANIA] Widok kwalifikuje się do przepisania zapytania
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;

Odświeżenie widoku zmaterializowanego

Możemy odświeżyć widok zmaterializowany poprzez pakiet PLSQL DBMS_MVIEW

Pakiet DBMS_MVIEW zawiera trzy API do wykonywania operacji odświeżania:

DBMS_MVIEW.REFRESH

Odśwież jeden lub więcej widoków zmaterializowanych.

DBMS_MVIEW.REFRESH_ALL_MVIEWS

Odśwież wszystkie widoki zmaterializowane.

DBMS_MVIEW.REFRESH_DEPENDENT

Odśwież wszystkie widoki zmaterializowane zależne od określonej tabeli głównej lub widoku zmaterializowanego lub listy tabel głównych lub widoków zmaterializowanych.

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

Jeśli spróbujesz wykonać szybkie odświeżenie, używając poniższego polecenia

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

Zgłosi błąd, ponieważ nie ma dziennika widoku zmaterializowanego. poniżej będziemy sprawdzać dziennik widoków zmaterializowanych

Wraz z Oracle 12c firma Oracle wprowadziła nowy interfejs API DBMS_SYNC_REFRESH do odświeżania

Co to jest dziennik zmaterializowanych widoków Oracle

Gdy zmiany DML są wprowadzane do danych tabeli głównej, Oracle Database przechowuje wiersze opisujące te zmiany w dzienniku widoku zmaterializowanego a następnie używa dziennika widoków zmaterializowanych do odświeżenia widoków zmaterializowanych na podstawie tabeli głównej. Ten proces nazywa się odświeżaniem przyrostowym lub szybkim. Bez dziennika widoku zmaterializowanego Oracle Database musi ponownie wykonać zapytanie widoku zmaterializowanego, aby odświeżyć widok zmaterializowany. Ten proces nazywa się całkowitym odświeżeniem. Zwykle szybkie odświeżenie zajmuje mniej czasu niż pełne odświeżenie.

Dziennik widoku zmaterializowanego znajduje się w głównej bazie danych w tym samym schemacie, co tabela główna. W tabeli głównej można zdefiniować tylko jeden dziennik widoku zmaterializowanego. Oracle Database może używać tego dziennika widoków zmaterializowanych do wykonywania szybkich odświeżeń dla wszystkich widoków zmaterializowanych, które można szybko odświeżać, w oparciu o tabelę główną.

Aby szybko odświeżyć widok złączenia zmaterializowanego, musisz utworzyć dziennik widoku zmaterializowanego dla każdej tabeli, do której odwołuje się widok zmaterializowany.

Odśwież grupę

Grupa odświeżania to zbiór co najmniej jednego zmaterializowanego widoku, który Oracle odświeża w transakcji atomowej, gwarantując zachowanie relacji między tabelami głównymi

Przykłady:

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 sprawdzić stan widoku zmaterializowanego

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

 

Opcja odświeżania poza miejscem dla zmaterializowanego widoku

W wersji 12c Release 1 dostępna jest nowa opcja odświeżania, która poprawia wydajność i dostępność odświeżania widoku zmaterializowanego. Ta opcja odświeżania jest nazywana odświeżaniem poza miejscem, ponieważ podczas odświeżania używa zewnętrznych tabel, w przeciwieństwie do istniejącego odświeżania „w miejscu”, które bezpośrednio stosuje zmiany do tabeli kontenera widoku zmaterializowanego. Opcja odświeżania poza miejscem działa ze wszystkimi istniejącymi metodami odświeżania, takimi jak FAST ('F'), COMPLETE ('C'), PCT ('P') i FORCE ('?').

Odświeżanie poza miejscem jest szczególnie skuteczne w przypadku obsługi sytuacji z dużą ilością zmian danych, w których konwencjonalne instrukcje DML nie dają się dobrze skalować. Umożliwia również osiągnięcie bardzo wysokiego stopnia dostępności, ponieważ zmaterializowane widoki, które są odświeżane, mogą być używane do bezpośredniego dostępu i przepisywania zapytań podczas wykonywania instrukcji odświeżania.

W przypadku odświeżania nie na miejscu, całe lub zmienione fragmenty zmaterializowanego widoku są przeliczane na jedną lub więcej tabel zewnętrznych.

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

Różnica między widokiem zmaterializowanym a widokiem Oracle

Jak wyjaśniono powyżej Widoki zmaterializowane są oparte na dysku i są okresowo aktualizowane na podstawie definicji zapytania.W widoku zmaterializowanym zestaw wyników jest przechowywany w tabeli widoku zmaterializowanego

Wyświetlenia są tylko wirtualne i uruchamiają definicję zapytania za każdym razem, gdy uzyskuje się do nich dostęp.W widoku nie jest przechowywany żaden zestaw wyników i uzyskuje on dostęp do tabeli bazowej przy każdym dostępie do widoku

Też czyta
Dołącza do Oracle
Podzapytania do Oracle
https://en.wikipedia.org/wiki/Materialized_view


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zautomatyzuj zadania integracji danych IRI za pomocą Oracle Job Scheduler

  2. ORA-00257:błąd archiwizatora. Połącz tylko wewnętrznie, aż do zwolnienia.

  3. ORA-00942:Czy można wybrać z schema.table, ale nie z tabeli?

  4. EXTRACT (data/godzina) Funkcja w Oracle

  5. Jak rozwiązać ORA-06512 pod numerem linii