PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Materialisierte PostgreSQL-Ansicht

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!