Was ist der Unterschied zwischen Ansichten und materialisierten Ansichten in Oracle?
345
Was ist der Unterschied zwischen Ansichten und materialisierten Ansichten in Oracle?
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.
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 .
quelle
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 REFRESH
Option aktualisiert werden . Dies erfordert einige zusätzliche Berechtigungen, ist jedoch nicht komplex.ON COMMIT REFRESH
ist seit mindestens Oracle 10 vorhanden.quelle
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.
quelle
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
quelle
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.
quelle
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.
quelle
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.
quelle