Materialisierte Ansichten ermöglichen es Ihnen, Ergebnisse komplexer Abfragen physisch zu speichern und regelmäßig zu aktualisieren. Daher sind sie in Fällen nützlich, in denen Sie einen schnellen Datenzugriff für Berichte und Business Intelligence benötigen. So erstellen Sie eine materialisierte Ansicht in PostgreSQL.
PostgreSQL-Ansicht vs. materialisierte Ansicht
Materialisierte Ansichten ähneln PostgreSQL-Ansichten, die es Ihnen ermöglichen, SQL-Abfragen zu speichern, um sie später aufzurufen. In der PostgreSQL-Ansicht können Sie jedoch nur die SQL-Abfrage und nicht ihr Ergebnis speichern. Materialisierte Ansichten ermöglichen es Ihnen, das Abfrageergebnis physisch zu speichern und regelmäßig zu aktualisieren. Daher sind materialisierte Ansichten schneller als PostgreSQL-Ansichten.
Bonuslektüre:So erhalten Sie die letzte Zeile pro Gruppe in PostgreSQL
So erstellen Sie eine materialisierte Ansicht in PostgreSQL
Sie können eine materialisierte Ansicht in PostgreSQL mit der Anweisung CREATE MATERIALIZED VIEW wie unten gezeigt erstellen.
CREATE MATERIALIZED VIEW view_name AS query WITH [NO] DATA;
In der obigen Anweisung müssen Sie view_name erwähnen sowie die Abfrage dessen Ergebnis Sie in der materialisierten Ansicht speichern möchten.
Schließlich können Sie auch die Option WITH DATA angeben, wenn Sie Daten zum Zeitpunkt ihrer Erstellung in die Ansicht laden möchten. Wenn Sie WITH NO DATA erwähnen, wird die Ansicht als nicht lesbar gekennzeichnet und Sie können keine Daten aus der Ansicht abfragen, bis Sie Daten in sie laden.
Bonus-Lesezugriff:PostgreSQL-Erstellungsfunktion
PostgreSQL Materialized View Refresh
Sie können Daten in die materialisierte Ansicht laden, indem Sie die Anweisung REFRESH MATERIALIZED VIEW wie gezeigt verwenden
REFRESH MATERIALIZED VIEW view_name
Sie können die obige Anweisung auch verwenden, um die materialisierte Ansicht zu aktualisieren.
Bitte beachten Sie, dass die REFRESH MATERIALIZED VIEW-Anweisung die Abfragedaten sperrt, sodass Sie keine Abfragen darauf ausführen können. Sie können dies vermeiden, indem Sie die Option CONCURRENTLY verwenden
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name
In diesem Fall erstellt PostgreSQL eine temporäre Ansicht, vergleicht sie mit der ursprünglichen und nimmt die erforderlichen Einfügungen, Aktualisierungen und Löschungen vor. Daher ist die Option GLEICHZEITIG nur für materialisierte Ansichten verfügbar, die einen eindeutigen Index haben.
Um die materialisierte Ansicht regelmäßig automatisch zu aktualisieren, können Sie REFRESH MATERIALIZED VIEW über ein automatisiertes Skript ausführen.
Bonuslektüre:PostgreSQL-Schema erstellen
Materialisierte Aufrufe entfernen
Sie können materialisierte Ansichten mit der Anweisung DROP MATERIALIZED VIEW löschen.
DROP MATERIALIZED VIEW view_name
Beispiele für materialisierte Ansichten
Sehen wir uns einige Beispiele für materialisierte Ansichten an.
Hier ist die Abfrage zum Erstellen einer materialisierten Ansicht namens sample_view
postgres=# create materialized view sample_view as select * from sales with no data;
In der obigen Abfrage haben wir die Option WITH NO DATA erwähnt, sodass die Ansicht keine Daten enthält und einen Fehler ausgibt, wenn wir versuchen, sie abzufragen.
postgres=# select * from sample_view; ERROR: materialized view "sample_view" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command.
Jetzt aktualisieren wir die Ansicht, um Daten hineinzuladen, und führen dann die obige Abfrage für unsere Ansicht aus.
postgres=# refresh materialized view sample_view; REFRESH MATERIALIZED VIEW postgres=# select * from sample_view; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 250 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Wie Sie oben sehen können, erhalten wir das Ergebnis, wenn wir unsere Abfrage erneut ausführen.
Hoffentlich können Sie jetzt ganz einfach materialisierte Ansichten für Ihre Datenbank erstellen.
Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!