Odpowiedzi:
Widoki zmaterializowane są oparte na dysku i są okresowo aktualizowane na podstawie definicji zapytania.
Widoki są tylko wirtualne i uruchamiają definicję zapytania przy każdym dostępie.
Oceniają dane w tabelach leżących u podstaw definicji widoku w momencie zapytania o widok . Jest to logiczny widok twoich tabel, bez danych przechowywanych gdzie indziej.
Zaletą widoku jest to, że zawsze zwróci ci najnowsze dane . Minusem myślą jest to, że jego realizacja zależy od tego jak dobry SELECT pogląd opiera się na. Jeśli instrukcja select używana przez widok łączy się z wieloma tabelami lub używa sprzężeń opartych na nieindeksowanych kolumnach, widok może działać słabo.
Są one podobne do zwykłych widoków, ponieważ są logicznym widokiem twoich danych (na podstawie instrukcji select), jednak podstawowy zestaw wyników zapytania został zapisany w tabeli . Zaletą tego jest to, że kiedy przeszukujesz zmaterializowany widok, odpytujesz tabelę , która może być również indeksowana.
Ponadto, ponieważ wszystkie sprzężenia zostały rozwiązane w czasie odświeżania widoku zmaterializowanego, płacisz cenę połączenia raz (lub tak często, jak odświeżasz widok zmaterializowany), a nie za każdym razem, gdy wybierzesz widok zmaterializowany. Ponadto, po włączeniu przepisywania zapytań, Oracle może zoptymalizować zapytanie, które wybiera ze źródła zmaterializowanego widoku w taki sposób, że zamiast tego odczytuje z zmaterializowanego widoku. W sytuacjach, w których tworzysz zmaterializowane widoki jako formy tabel agregacyjnych lub kopie często wykonywanych zapytań, może to znacznie przyspieszyć czas odpowiedzi aplikacji użytkownika końcowego. Minusem jest jednak, że dane wrócisz z zmaterializował widok jest tylko tak na bieżąco, co po raz ostatni Widok zmaterializowany został odświeżony .
Widoki zmaterializowane można ustawić tak, aby odświeżały się ręcznie, zgodnie z ustalonym harmonogramem lub w oparciu o bazę danych wykrywającą zmianę danych z jednej z podstawowych tabel . Widoki zmaterializowane można aktualizować stopniowo, łącząc je ze zmaterializowanymi dziennikami widoków, które działają jak źródła przechwytywania danych zmian w tabelach leżących u podstaw.
Widoki zmaterializowane są najczęściej używane w aplikacjach do hurtowni danych / analiz biznesowych, w których zapytania do dużych tabel faktów z tysiącami milionów wierszy skutkowałyby czasami odpowiedzi na zapytania, co spowodowało, że aplikacja nie mogła zostać użyta.
Widoki zmaterializowane pomagają również zagwarantować spójny moment w czasie, podobny do izolacji migawki .
Widok wykorzystuje zapytanie do pobrania danych z tabel bazowych.
Widok zmaterializowany to tabela na dysku, która zawiera zestaw wyników zapytania.
Widoki zmaterializowane są używane przede wszystkim w celu zwiększenia wydajności aplikacji, gdy nie jest wykonalne lub pożądane użycie widoku standardowego z zastosowanymi indeksami. Widoki zmaterializowane mogą być regularnie aktualizowane przez wyzwalacze lub za pomocą ON COMMIT REFRESH
opcji. Wymaga to kilku dodatkowych uprawnień, ale to nic skomplikowanego. ON COMMIT REFRESH
istnieje od co najmniej Oracle 10.
Widoki są w zasadzie logicznymi strukturami tabelopodobnymi zapełnianymi w locie przez dane zapytanie. Wyniki zapytania dotyczącego widoku nie są zapisywane w dowolnym miejscu na dysku, a widok jest odtwarzany za każdym razem, gdy zapytanie jest wykonywane. Widoki zmaterializowane to rzeczywiste struktury przechowywane w bazie danych i zapisywane na dysku. Są one aktualizowane na podstawie parametrów zdefiniowanych podczas ich tworzenia.
Widok: widok to tylko nazwane zapytanie. Nic nie przechowuje. W przypadku zapytania dotyczącego widoku uruchamiane jest zapytanie definicji widoku. Rzeczywiste dane pochodzą z tabeli.
Widoki zmaterializowane : fizycznie przechowują dane i są okresowo aktualizowane. Podczas odpytywania MV podaje dane z MV.
Dodanie do dość dokładnej odpowiedzi Mike'a McAllistera ...
Widoki zmaterializowane można ustawić tak, aby odświeżały się automatycznie poprzez bazę danych wykrywającą zmiany, gdy kompilator uzna, że zapytanie o widok jest proste . Jeśli zostanie to uznane za zbyt skomplikowane, nie będzie w stanie skonfigurować tak naprawdę wewnętrznych wyzwalaczy do śledzenia zmian w tabelach źródłowych, aby zaktualizować tylko zmienione wiersze w tabeli mview.
Kiedy tworzysz zmaterializowany widok, przekonasz się, że Oracle tworzy zarówno widok, jak i tabelę o tej samej nazwie , co może wprowadzać zamieszanie.
Widoki zmaterializowane to logiczny widok danych sterowany przez wybrane zapytanie, ale wynik zapytania zostanie zapisany w tabeli lub dysku, a także definicja zapytania zostanie zapisana w bazie danych.
Wydajność widoku zmaterializowanego jest lepsza niż normalny widok, ponieważ dane zmaterializowanego widoku zostaną zapisane w tabeli, a tabela może zostać zindeksowana, dzięki czemu szybsze łączenie również jest wykonywane w czasie odświeżania widoków zmaterializowanych, więc nie ma potrzeby każdorazowego uruchamiania dołączyć instrukcję jak w przypadku widoku.
Inna różnica polega na tym, że w przypadku widoku zawsze otrzymujemy najnowsze dane, ale w przypadku widoku zmaterializowanego musimy odświeżyć widok, aby uzyskać najnowsze dane. W przypadku widoku zmaterializowanego potrzebujemy dodatkowego wyzwalacza lub jakiejś automatycznej metody, abyśmy mogli odświeżać MV, nie jest to wymagane w przypadku widoków w bazie danych.