Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie implementiert man Materialized View mit MySQL?

Ich verwalte ein Projekt namens Flexviews (http://github.com/greenlion/swanhart-tools ), das MySQL inkrementell aktualisierbare materialisierte Ansichten hinzufügt (auch bekannt als schnelle Aktualisierung), selbst für Ansichten, die Joins und Aggregation verwenden. Ich arbeite seit drei Jahren an diesem Projekt. Es enthält ein Change Data Capture-Dienstprogramm zum Lesen der Datenbankprotokolle. Es werden keine Trigger verwendet.

Es enthält zwei Aktualisierungsmethoden. Die erste ähnelt Ihrer Methode, außer dass eine neue Version erstellt wird und dann RENAME TABLE verwendet wird, um die neue gegen die alte auszutauschen. Die Ansicht ist zu keinem Zeitpunkt für Abfragen unverfügbar, sondern es wird kurzzeitig der doppelte Speicherplatz belegt.

Die zweite Methode ist eine echte "schnelle Aktualisierung", sie unterstützt sogar Aggregation und Joins.

Es gibt einen Blogbeitrag darüber:http://www.mysqlperformanceblog.com/2011/04/04/flexviews-part-3-improving-query-performance-using-materialized-views/

Flexviews ist wesentlich weiter entwickelt als das von astander referenzierte FromDual-Beispiel.