Beste Möglichkeit, eine materialisierte Ansicht in MySQL zu erstellen
18
Ich benutze MySQL 5.6. Ich kann keine materialisierte Ansicht wie in Oracle erstellen. Ich habe ein oder zwei Lösungen wie Flexview gesehen.
Kann mir jemand am besten sagen, wie man eine materialisierte Ansicht in MySQL (automatische Aktualisierung wie in Oracle) mit minimaler Komplexität erstellt?
Da Sie es bereits haben, kann es sein, dass Sie eine gewisse Sorgfalt und Ellenbogenfett benötigen, um es weiter zu verwenden (falls Sie es noch nicht getan haben).
ALTERNATIVE 1
Möglicherweise möchten Sie Übersichtstabellen einrichten. Sie müssen Ihre Basistabellen indizieren, um die Aggregation zu unterstützen, bevor Sie Übersichtstabellen erstellen.
ALTERNATIVE 2
Hier ist ein alter Beitrag von http://www.materialized.info/, der eine bodenständigere Strategie hat, die faszinierend aussieht. Es beinhaltet die Verwendung von Triggern. Sieht so aus, als könnte es Spaß machen ...
ALTERNATIVE 3
Wenn Ihre Basistabellen nicht so groß sind und Sie einmal pro Woche ganze Tabellen abfragen können, lesen Sie den User CommentsAbschnitt der MySQL-Dokumentation zu CREATE VIEW . Suchen Sie materializedauf dieser Seite nach einem Wort .
Wenn Ihre zugrunde liegenden Daten größtenteils stabil sind oder Sie Unterschiede zwischen der Ansicht und den Daten tolerieren können, ziehen Sie die Verwendung der Simple-Rolap- Tools in Betracht , die ich zur Behandlung dieses Anwendungsfalls geschrieben habe. Mit diesen können Sie komplexe SQL-Abfragen, die Tabellen generieren, in separate Dateien schreiben. Die Beziehungen zwischen den Abfragen werden automatisch abgeleitet und die Abfragen werden in der entsprechenden Reihenfolge über das Unix- Tool make ausgeführt . Um die generierten Tabellen zu aktualisieren, müssten Sie ausführen make clean all. Das Tool eignet sich hauptsächlich zum schrittweisen Erstellen komplexer Abfragen, die auf der Grundlage der vorberechneten Ergebnisse ihrer Eingaben effizient ausgeführt werden.
Ich habe zwei mögliche Lösungen gefunden, um Ansichten in MySQL zu materialisieren:
Erstellen Sie eine Aggregationstabelle mit allen erforderlichen Daten und erstellen Sie dann Trigger für die Tabellen, aus denen die Daten stammen.
Erstellen Sie einen Scheduler, der die Daten in regelmäßigen Abständen zu einer Tabelle zusammenfasst
Weitere Informationen zum Implementieren der beiden Optionen in meinem Blogbeitrag finden Sie hier: materialized view MySQL
quelle
Wenn Ihre zugrunde liegenden Daten größtenteils stabil sind oder Sie Unterschiede zwischen der Ansicht und den Daten tolerieren können, ziehen Sie die Verwendung der Simple-Rolap- Tools in Betracht , die ich zur Behandlung dieses Anwendungsfalls geschrieben habe. Mit diesen können Sie komplexe SQL-Abfragen, die Tabellen generieren, in separate Dateien schreiben. Die Beziehungen zwischen den Abfragen werden automatisch abgeleitet und die Abfragen werden in der entsprechenden Reihenfolge über das Unix- Tool make ausgeführt . Um die generierten Tabellen zu aktualisieren, müssten Sie ausführen
make clean all
. Das Tool eignet sich hauptsächlich zum schrittweisen Erstellen komplexer Abfragen, die auf der Grundlage der vorberechneten Ergebnisse ihrer Eingaben effizient ausgeführt werden.quelle