Warum nicht eine Tabelle anstelle einer materialisierten Ansicht verwenden?

53

Ich bin neu in Oracle-Datenbanken. Wenn ich richtig verstanden habe, ist materialisierte Ansicht eine Ansicht, deren Ergebnismenge als physische Tabelle in der Datenbank gespeichert wird und diese Ansicht / Tabelle wird auf der Grundlage einiger Parameter aktualisiert. Wenn die Ansicht als physische Tabelle gespeichert wird, warum werden die Daten nicht zunächst in einer Tabelle gespeichert? Was ist der Vorteil einer materialisierten Ansicht anstelle einer Tabelle?

jrara
quelle

Antworten:

59

Einer der größten Vorteile einer materialisierten Ansicht besteht darin, dass Oracle dafür sorgt, dass die Daten synchron bleiben. Wenn Sie eine separate Aggregattabelle haben, sind Sie dafür verantwortlich, die Daten synchron zu halten. Das erfordert im Allgemeinen eine angemessene Menge an Code und eine angemessene Menge an Tests, und die meisten Organisationen schaffen es, Fehler zu machen, die Lücken hinterlassen, die dazu führen, dass die Aggregattabelle nicht mehr synchron ist. Dies gilt insbesondere dann, wenn Sie versuchen, inkrementelle Aktualisierungen der Aggregattabelle zu implementieren.

Ein weiterer großer Vorteil ist, dass Oracle abhängig von den Einstellungen Query Rewrite verwenden kann, um materialisierte Ansichten zu verwenden, wenn Benutzer Abfragen für Basistabellen ausgeben. Wenn Sie beispielsweise mehrere vorhandene Berichte für eine Detailtabelle haben, die tägliche, monatliche und jährliche aggregierte Ergebnisse liefern, können Sie eine materialisierte Ansicht für die Basistabelle erstellen, in der die Daten auf Tagesebene aggregiert werden, und das Optimierungsprogramm kann dies Verwenden Sie diese materialisierte Ansicht für alle Ihre vorhandenen Abfragen. Dies erleichtert die Optimierung der Berichtsauslastung in einem Data Warehouse erheblich, ohne Dutzende von Berichten neu schreiben zu müssen, um Ihre neue Aggregattabelle zu verwenden oder um das Erzwingen DBMS_ADVANCED_REWRITEeigener Neuschreibungen der Abfragen zu erzwingen.

Justin Cave
quelle
14

Materialisierte Ansichten werden automatisch aktualisiert, wenn ihre Basistabellen aktualisiert werden.

Gordon Bell
quelle
1
Beachten Sie, dass dies ON DEMANDdas Standardaktualisierungsverhalten ist. Die materialisierte Ansicht muss mit erstellt werden ON COMMIT. und die materialisierte Ansicht beizubehalten ist nicht frei. Es ist jedoch wahrscheinlich billiger als ein Abzug.
Durette
10

Ein guter Fall für die Verwendung von MVs ist, dass Sie manchmal Daten aggregieren und diese zusammenfassenden Informationen häufig und schnell aus großen Tabellen abrufen möchten. Ohne materialisierte Ansichten müssen Sie entweder einige Ihrer Tabellen deonormalisieren und die Aggregate über Code verwalten oder große Reihen von Zeilen wiederholt scannen. Beides ist insbesondere bei Dashboards und ähnlichen Online-Anwendungen nicht immer akzeptabel. Wenn Sie die Ergebnisse in separaten Tabellen speichern, wird der Anwendungscode kompliziert, und wie von @Justin Cave angegeben, müssen Sie sicherstellen, dass die manuell aggregierten Daten synchron sind. mit den Daten der Originaltabelle.

Keine Chance
quelle
4

Keine Oracle-Person, sondern ein anderer Anwendungsfall wären Lösungen von Drittanbietern. Sie unterstützen Sie im Allgemeinen nicht dabei, Änderungen an ihren Designs vorzunehmen, aber ein MV wäre für ihren Code "unsichtbar", bietet jedoch Zugriff auf benutzerdefinierte Berichte / Datenextrakte.

Dies ist insofern nicht kostenlos, als es Speicherkosten und potenziell effektive Einfüge- / Aktualisierungskosten verursacht. Dies kann jedoch durch den Zeitaufwand für das Abrufen der materialisierten Daten im Vergleich zu einer "geraden Ansicht" oder für das Erstellen tatsächlicher Tabellen und die Pflege der umgebenden ETL ausgeglichen werden.

Wenn Sie dies tun, wird möglicherweise Ihr Supportvertrag mit dem Anbieter ungültig. Wenden Sie sich an Ihren Anwalt

billinkc
quelle
2

Anstatt direkt zu den materialisierten Ansichten zu wechseln, möchte ich die Ansichten erläutern .

Grundsätzlich existieren Views logisch anders als Tabellen. Wenn wir bestimmte Spalten für Benutzer ausblenden möchten, können wir keine Tabellen verwenden. Durch das Erstellen einer Ansicht können wir die Sicherheit erreichen.

Anwendungsfall: Wenn eine Ansicht intern mit 10 Tabellen sowie mit group by verknüpft ist und Funktionen über Millionen von Zeilen verfügen, dauert die Ausführung sehr lange.

Hier kommt also Materialized Views, mit denen wir Daten schneller abrufen können. Materialisierte Ansichten sind physisch in der Datenbank vorhanden. Bei jeder Aktualisierung der Basistabelle wird die materialisierte Ansicht aktualisiert.

Materialisierte Ansichten werden basierend auf der Abfragedefinition regelmäßig aktualisiert. Dies ist in der Tabelle nicht möglich.

Premraj
quelle
0

Eine materialisierte Ansicht kann so eingerichtet werden, dass sie regelmäßig automatisch aktualisiert wird. Eine Tabelle benötigt möglicherweise zusätzlichen Code zum Abschneiden / Neuladen von Daten.

Beispiel: Eine materialisierte Ansicht mit Daten aus mehreren Tabellen kann so eingerichtet werden, dass sie außerhalb der Stoßzeiten automatisch aktualisiert wird. Eine physische Tabelle würde zusätzlichen Code zum Abschneiden / Neuladen von Daten benötigen.

Die Sicherheit kann in einer materialisierten Ansicht besser gesteuert werden als in einer Tabelle.

Samroze
quelle
0

Eine materialisierte Ansicht ist ein Datenbankobjekt, das die Ergebnisse einer Abfrage enthält. Sie sind lokale Kopien von Daten, die sich an einem anderen Ort befinden, oder werden zum Erstellen von Übersichtstabellen verwendet, die auf Aggregationen der Daten einer Tabelle basieren. http://www.oraappdata.com/2016/04/materialized-view.html

Dayakark
quelle
1
Bitte beachten Sie, dass es nicht darum ging, was eine materialisierte Ansicht ist, sondern darum, warum und wie sie verwendet wird.
Twinkles