Was ist der Unterschied zwischen Ansichten und materialisierten Ansichten in Oracle?

Antworten:

355

Materialisierte Ansichten sind festplattenbasiert und werden regelmäßig basierend auf der Abfragedefinition aktualisiert.

Ansichten sind nur virtuell und führen die Abfragedefinition bei jedem Zugriff aus.

Dacracot
quelle
54
Auch wenn Sie Leistung für Daten benötigen, die nicht auf den neuesten Stand gebracht werden müssen, sind materialisierte Ansichten besser, aber Ihre Daten sind älter als in einer Standardansicht. Normalerweise profitieren BI-Berichte stark von materialisierten Ansichten.
Marthinus
29
@Marthinus - das ist korrekt, außer im Fall einer materialisierten Ansicht, die REFRESH ON COMMIT ist - das MV gibt genau die Daten zurück, die festgeschrieben wurden.
Jeffrey Kemp
2
Was bedeutet DISK based? Bedeutet das, dass die Tabelle nicht Teil von DISK ist? Wird es in einer Datei gespeichert und der Festplattenzugriff ist schneller als der Dateizugriff ....?
Kanagavelu Sugumar
1
@KanagaveluSugumar Ja, die eigentlichen Tabellen werden auch auf die Festplatte geschrieben.
Dacracot
5
@ Dacracot Danke! Ich denke, Sie wollen etwas anderes als DB-Tabellen in der DISK sagen; Diese MVIEW verwaltet auch eine Tabelle, indem alle Verknüpfungen aufgelöst werden. Damit zur Laufzeit der Zugriff auf eine einzelne Tabelle ausreicht; und es ist nicht erforderlich, mehrere Tabellen nach Verknüpfungsbedingungen abzufragen, was normalerweise in der normalen Ansicht erfolgt. Vielen Dank!
Kanagavelu Sugumar
332

Ansichten

Sie werten die Daten in den Tabellen aus, die der Ansichtsdefinition zum Zeitpunkt der Abfrage der Ansicht zugrunde liegen . Es ist eine logische Ansicht Ihrer Tabellen, in der nirgendwo anders Daten gespeichert sind.

Der Vorteil einer Ansicht ist, dass immer die neuesten Daten an Sie zurückgegeben werden . Der Nachteil einer Ansicht ist, dass ihre Leistung davon abhängt, auf welcher guten Anweisung die Ansicht basiert. Wenn die von der Ansicht verwendete select-Anweisung viele Tabellen verknüpft oder Verknüpfungen verwendet, die auf nicht indizierten Spalten basieren, kann die Leistung der Ansicht schlecht sein.

Materialisierte Ansichten

Sie ähneln regulären Ansichten, da sie eine logische Ansicht Ihrer Daten sind (basierend auf einer select-Anweisung). Die zugrunde liegende Abfrageergebnismenge wurde jedoch in einer Tabelle gespeichert . Dies hat den Vorteil, dass Sie beim Abfragen einer materialisierten Ansicht eine Tabelle abfragen , die möglicherweise auch indiziert ist.

Da alle Verknüpfungen zum Zeitpunkt der Aktualisierung der materialisierten Ansicht aufgelöst wurden, zahlen Sie den Preis für die Verknüpfung einmal (oder so oft, wie Sie die materialisierte Ansicht aktualisieren) und nicht jedes Mal, wenn Sie aus der materialisierten Ansicht auswählen. Darüber hinaus kann Oracle bei aktiviertem Umschreiben von Abfragen eine Abfrage optimieren, die aus der Quelle Ihrer materialisierten Ansicht ausgewählt wird, sodass sie stattdessen aus Ihrer materialisierten Ansicht liest. In Situationen, in denen Sie materialisierte Ansichten als Formen von Aggregattabellen oder als Kopien häufig ausgeführter Abfragen erstellen, kann dies die Antwortzeit Ihrer Endbenutzeranwendung erheblich beschleunigen. Der Nachteil ist jedoch, dass die Daten, die Sie aus der materialisierten Ansicht zurückerhalten, nur so aktuell sind wie das letzte Mal, als die materialisierte Ansicht aktualisiert wurde .


Materialisierte Ansichten können so eingestellt werden, dass sie manuell, nach einem festgelegten Zeitplan oder basierend auf der Datenbank aktualisiert werden, die eine Änderung der Daten aus einer der zugrunde liegenden Tabellen erkennt . Materialisierte Ansichten können schrittweise aktualisiert werden, indem sie mit materialisierten Ansichtsprotokollen kombiniert werden, die als Quellen für die Erfassung von Änderungsdaten in den zugrunde liegenden Tabellen dienen.

Materialisierte Ansichten werden am häufigsten in Data Warehousing- / Business Intelligence-Anwendungen verwendet, bei denen das Abfragen großer Faktentabellen mit Tausenden von Millionen Zeilen zu Antwortzeiten für Abfragen führt, die zu einer unbrauchbaren Anwendung führen.


Materialisierte Ansichten tragen auch dazu bei, einen konsistenten Zeitpunkt zu gewährleisten, ähnlich wie bei der Snapshot-Isolierung .

Mike Williamson
quelle
9
+1 für die ausführliche Erklärung, aber was ist der Nachteil des Umschreibens von Abfragen? Wenn das Umschreiben von Abfragen es Oracle ermöglicht, die Abfrage noch weiter zu optimieren, sollten wir IMMER das Umschreiben von Abfragen aktivieren, nicht wahr?
Rosdi Kasim
6
@Rosdi, sagte er es: "Die Daten, die Sie aus der materialisierten Ansicht zurückerhalten, sind nur so aktuell wie das letzte Mal, als die materialisierte Ansicht aktualisiert wurde"
Jeffrey Kemp
49

Eine Ansicht verwendet eine Abfrage, um Daten aus den zugrunde liegenden Tabellen abzurufen.

Eine materialisierte Ansicht ist eine Tabelle auf der Festplatte, die die Ergebnismenge einer Abfrage enthält.

Materialisierte Ansichten werden hauptsächlich verwendet, um die Anwendungsleistung zu steigern, wenn es nicht möglich oder wünschenswert ist, eine Standardansicht mit darauf angewendeten Indizes zu verwenden. Materialisierte Ansichten können regelmäßig entweder durch Trigger oder mithilfe der ON COMMIT REFRESHOption aktualisiert werden . Dies erfordert einige zusätzliche Berechtigungen, ist jedoch nicht komplex. ON COMMIT REFRESHist seit mindestens Oracle 10 vorhanden.

Jeremiah Peschka
quelle
Es gibt eine "REFRESH ON COMMIT" -Option, die in einer materialisierten Ansicht angegeben werden kann
Hybris95
Vielen Dank! Ich werde die Antwort aktualisieren. Wissen Sie, wann diese Funktionalität zu Oracle hinzugefügt wurde?
Jeremiah Peschka
20

Ansichten sind im Wesentlichen logische tabellenartige Strukturen, die von einer bestimmten Abfrage im laufenden Betrieb gefüllt werden. Die Ergebnisse einer Ansichtsabfrage werden nirgendwo auf der Festplatte gespeichert und die Ansicht wird bei jeder Ausführung der Abfrage neu erstellt. Materialisierte Ansichten sind tatsächliche Strukturen, die in der Datenbank gespeichert und auf die Festplatte geschrieben werden. Sie werden basierend auf den Parametern aktualisiert, die beim Erstellen definiert wurden.

user12786
quelle
Was bedeutet DISK based? Bedeutet das, dass die Tabelle nicht Teil von DISK ist? Wird es in einer Datei gespeichert und der Festplattenzugriff ist schneller als der Dateizugriff ....?
Kanagavelu Sugumar
18

Materialisierte Ansicht - Eine Tabelle auf einer Festplatte, die die Ergebnismenge einer Abfrage enthält

Nicht materielle Ansicht - eine Abfrage, die Daten aus der zugrunde liegenden Tabelle abruft

fn27
quelle
7

Ansicht: Ansicht ist nur eine benannte Abfrage. Es speichert nichts. Wenn eine Abfrage angezeigt wird, wird die Abfrage der Ansichtsdefinition ausgeführt. Die tatsächlichen Daten stammen aus der Tabelle.

Materialisierte Ansichten: Speichert Daten physisch und wird regelmäßig aktualisiert. Beim Abfragen von MV werden Daten von MV ausgegeben.

smshafiqulislam
quelle
2

Hinzufügen zu Mike McAllisters ziemlich gründlicher Antwort ...

Materialisierte Ansichten können nur so eingestellt werden, dass sie automatisch über die Datenbank aktualisiert werden, um Änderungen zu erkennen, wenn die Ansichtsabfrage vom Compiler als einfach angesehen wird. Wenn es als zu komplex angesehen wird, kann es keine internen Trigger einrichten, um Änderungen in den Quelltabellen zu verfolgen und nur die geänderten Zeilen in der mview-Tabelle zu aktualisieren.

Wenn Sie eine materialisierte Ansicht erstellen, werden Sie feststellen, dass Oracle sowohl die mview als auch eine Tabelle mit demselben Namen erstellt , was die Dinge verwirren kann.

Eintopf S.
quelle
Die Tabellen, die eine materialisierte Ansicht unterstützen, haben nicht denselben Namen wie die Ansicht.
Jeffrey Kemp
@ JeffreyKemp, bist du sicher? Die hier akzeptierte Antwort stackoverflow.com/a/33552513 behauptet etwas anderes. Obwohl ja, dies könnte im Jahr 2010 anders gewesen sein, als Sie kommentierten ...
Leqid
Mein Kommentar oben muss auf einer älteren Version (wahrscheinlich 9i) gewesen sein. Sie haben Recht, MVs erhalten zumindest in modernen Versionen eine Tabelle mit demselben Namen.
Jeffrey Kemp
1

Materialisierte Ansichten sind die logische Ansicht von Daten, die von der Auswahlabfrage gesteuert werden. Das Ergebnis der Abfrage wird jedoch in der Tabelle oder auf der Festplatte gespeichert. Die Definition der Abfrage wird auch in der Datenbank gespeichert.

Die Leistung der materialisierten Ansicht ist besser als die der normalen Ansicht, da die Daten der materialisierten Ansicht in einer Tabelle gespeichert werden und die Tabelle möglicherweise so schnell indiziert wird, dass das Verbinden auch zum Zeitpunkt der Aktualisierung der materialisierten Ansichten erfolgt, sodass nicht jedes Mal ein Brand erforderlich ist Join-Anweisung wie im Fall der Ansicht.

Ein weiterer Unterschied besteht darin, dass wir im Fall der Ansicht immer die neuesten Daten erhalten. Im Fall der materialisierten Ansicht müssen wir die Ansicht aktualisieren, um die neuesten Daten zu erhalten. Im Fall einer materialisierten Ansicht benötigen wir einen zusätzlichen Trigger oder eine automatische Methode, damit MV aktualisiert bleibt. Dies ist für Ansichten in der Datenbank nicht erforderlich.

Dhirendra Gautam
quelle