Dlaczego nie użyć tabeli zamiast zmaterializowanego widoku?

53

Jestem nowy w bazach danych Oracle. Jeśli dobrze zrozumiałem, zmaterializowany widok jest widokiem, którego zestaw wyników jest zapisywany jako fizyczna tabela w bazie danych i ten widok / tabela jest odświeżany na podstawie niektórych parametrów. Jeśli widok jest zapisany jako fizyczna tabela, dlaczego nie przechowywać danych w tabeli? Jaka jest więc korzyść z zastosowania zmaterializowanego widoku zamiast tabeli?

jrara
źródło

Odpowiedzi:

59

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_REWRITEaby wymusić własne przepisywanie zapytań.

Justin Cave
źródło
14

Widoki zmaterializowane są automatycznie aktualizowane w miarę aktualizowania ich tabel podstawowych.

Gordon Bell
źródło
1
Pamiętaj, że ON DEMANDjest 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.
durette
10

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.

Bez szans
źródło
4

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

billinkc
źródło
2

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.

Widoki zmaterializowane są okresowo aktualizowane na podstawie definicji zapytania, tabela nie może tego zrobić.

Premraj
źródło
0

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.

samroze
źródło
0

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

Dayakark
źródło
1
Należy pamiętać, że pytanie nie dotyczyło tego, czym jest zmaterializowany widok, ale dlaczego i jak z niego korzystać.
Twinkles,