Jedną z największych zalet korzystania ze zmaterializowanego widoku jest to, że Oracle dba o synchronizację danych. Jeśli masz osobną tabelę zbiorczą, jesteś odpowiedzialny za synchronizację danych. Zwykle wymaga to rozsądnej ilości kodu i przyzwoitej ilości testów, a większości organizacji udaje się popełniać błędy, które pozostawiają dziury powodujące brak synchronizacji tabeli agregatów. Jest to szczególnie prawdziwe, gdy próbujesz zaimplementować przyrostowe odświeżanie tabeli zagregowanej.
Inną ważną zaletą jest to, że w zależności od ustawień Oracle może użyć przepisywania zapytań, aby użyć zmaterializowanych widoków, gdy użytkownicy wysyłają zapytania do tabel podstawowych. Na przykład, jeśli masz kilka istniejących raportów z tabelą szczegółów, które generują dzienne, miesięczne i roczne wyniki agregacji, możesz utworzyć zmaterializowany widok w tabeli bazowej, który agreguje dane na poziomie dziennym, a optymalizator może wykorzystaj ten zmaterializowany widok do wszystkich istniejących zapytań. Ułatwia to optymalizację obciążeń raportowania w hurtowni danych bez konieczności przechodzenia i przepisywania dziesiątek raportów w celu użycia nowej tabeli zbiorczej lub bałaganu, DBMS_ADVANCED_REWRITE
aby wymusić własne przepisywanie zapytań.
ON DEMAND
jest to domyślne zachowanie odświeżania. Widok zmaterializowany należy utworzyć za pomocąON COMMIT
. a utrzymanie zmaterializowanego widoku nie jest darmowe. Jest jednak prawdopodobnie tańszy niż spust.Jednym z dobrych argumentów przemawiających za zastosowaniem MV jest to, że czasami chcesz agregować dane i uzyskiwać te informacje podsumowujące z dużych tabel często i szybko. Bez zmaterializowanych widoków musisz albo zdonormalizować niektóre swoje tabele i utrzymywać agregacje za pomocą kodu lub wielokrotnie skanować duże zestawy wierszy. Tak czy inaczej, nie zawsze jest to dopuszczalne, szczególnie w przypadku pulpitu nawigacyjnego i podobnych aplikacji internetowych. Jeśli przechowujesz wyniki w osobnych tabelach, komplikujesz kod aplikacji i, jak mówi @Justin Cave, będziesz odpowiedzialny za upewnienie się, że ręcznie zagregowane dane są zsynchronizowane. z danymi oryginalnej tabeli.
źródło
Nie jest to osoba Oracle, ale innym przypadkiem użycia byłyby rozwiązania stron trzecich. Zasadniczo nie obsługują wprowadzania zmian w ich projektach, ale MV byłby „niewidoczny” dla ich kodu, ale zapewniałby dostęp do niestandardowych raportów / wyciągów danych.
Nie jest darmowy, ponieważ będzie kosztował koszty przechowywania i potencjalnie wpływające na koszty wstawiania / aktualizacji, ale może to być równoważone czasem spędzonym na wyszukiwaniu zmaterializowanych danych w porównaniu z „prostym widokiem” lub tworzeniem rzeczywistych tabel i utrzymywaniem otaczającego ETL.
Wreszcie, może to unieważnić umowę wsparcia ze sprzedawcą, skonsultuj się z prawnikiem-bla-bla-bla
źródło
Zamiast przejść bezpośrednio do widoków zmaterializowanych, pozwól mi wyjaśnić widoki .
Zasadniczo widoki istnieją logicznie w przeciwieństwie do tabel. Jeśli chcemy ukryć pewne kolumny przed użytkownikami, nie możemy tego zrobić przy użyciu tabel. Tworząc widok, możemy osiągnąć bezpieczeństwo.
Przypadek użycia: jeśli widok jest wewnętrznie powiązany z 10 tabelami z grupowaniem według, a funkcje mają miliony wierszy, wykonanie zajmuje dużo czasu.
Oto nadchodzące widoki zmaterializowane pomagają nam szybciej uzyskiwać dane. Widoki zmaterializowane są fizycznie dostępne w bazie danych. Za każdym razem, gdy tabela podstawowa jest aktualizowana, widok zmaterializowany jest aktualizowany.
źródło
Widok zmaterializowany można skonfigurować tak, aby okresowo odświeżał się automatycznie. Tabela może wymagać dodatkowego kodu do obcinania / ponownego ładowania danych.
przykład: widok zmaterializowany zawierający dane z wielu tabel można skonfigurować tak, aby odświeżał się automatycznie w godzinach poza szczytem. Fizyczna tabela potrzebowałaby dodatkowego kodu do obcięcia / ponownego załadowania danych.
Bezpieczeństwo można lepiej kontrolować w widoku zmaterializowanym, a nie w tabeli.
źródło
Widok zmaterializowany to obiekt bazy danych, który zawiera wyniki zapytania. Są to lokalne kopie danych zlokalizowane zdalnie lub służą do tworzenia tabel podsumowań na podstawie agregacji danych tabeli. http://www.oraappdata.com/2016/04/materialized-view.html
źródło