Met gematerialiseerde weergaven kunt u de resultaten van complexe query's fysiek opslaan en periodiek bijwerken. Ze zijn dus handig in gevallen waarin u snelle gegevenstoegang nodig hebt voor rapportage en business intelligence. Hier leest u hoe u een gematerialiseerde weergave in PostgreSQL kunt maken.
PostgreSQL-weergave versus gematerialiseerde weergave
Gematerialiseerde weergaven zijn vergelijkbaar met PostgreSQL-weergaven waarmee u SQL-query's kunt opslaan om ze later op te roepen. Met de PostgreSQL-weergave kunt u echter alleen de SQL-query opslaan en niet het resultaat. Met gematerialiseerde weergaven kunt u het queryresultaat fysiek opslaan en periodiek bijwerken. Als gevolg hiervan zijn gerealiseerde weergaven sneller dan PostgreSQL-weergaven.
Bonus lezen:hoe u de laatste rij per groep in PostgreSQL kunt krijgen
Hoe maak je een gematerialiseerde weergave in PostgreSQL
U kunt een gematerialiseerde weergave maken in PostgreSQL met behulp van de instructie CREATE MATERIALIZED VIEW, zoals hieronder weergegeven.
CREATE MATERIALIZED VIEW view_name AS query WITH [NO] DATA;
In de bovenstaande verklaring moet u view_name . vermelden evenals de query waarvan u het resultaat wilt opslaan in de gerealiseerde weergave.
Ten slotte kunt u ook de optie WITH DATA specificeren als u gegevens in de weergave wilt laden op het moment dat ze worden gemaakt. Als u ZONDER GEGEVENS vermeldt, wordt de weergave gemarkeerd als onleesbaar en kunt u geen gegevens uit de weergave opvragen totdat u er gegevens in laadt.
Bonus lezen:PostgreSQL-aanmaakfunctie
PostgreSQL gematerialiseerde weergave vernieuwen
U kunt gegevens in de gematerialiseerde weergave laden met de instructie REFRESH MATERIALIZED VIEW zoals weergegeven
REFRESH MATERIALIZED VIEW view_name
U kunt de bovenstaande verklaring ook gebruiken om de gerealiseerde weergave te vernieuwen.
Houd er rekening mee dat de instructie REFRESH MATERIALIZED VIEW de querygegevens vergrendelt, zodat u er geen query's op kunt uitvoeren. U kunt het vermijden door de optie GELIJKTIJDIG te gebruiken
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name
In dit geval maakt PostgreSQL een tijdelijke weergave, vergelijkt deze met de originele en maakt de nodige invoegingen, updates en verwijderingen. Als gevolg hiervan is de optie GELIJKTIJDIG alleen beschikbaar voor gerealiseerde weergaven met een unieke index.
Om de gematerialiseerde weergave automatisch periodiek te vernieuwen, kunt u REFRESH MATERIALIZED VIEW uitvoeren via een geautomatiseerd script.
Bonus Lezen:PostgreSQL Schema maken
Gerealiseerde weergaven verwijderen
U kunt gerealiseerde weergaven verwijderen met de instructie DROP MATERIALIZED VIEW.
DROP MATERIALIZED VIEW view_name
Voorbeelden van gematerialiseerde weergave
Laten we eens kijken naar enkele concrete voorbeelden.
Dit is de vraag om een gerealiseerde weergave te maken met de naam sample_view
postgres=# create materialized view sample_view as select * from sales with no data;
In de bovenstaande zoekopdracht hebben we de optie ZONDER GEGEVENS genoemd, dus de weergave bevat geen gegevens en geeft een foutmelding wanneer we deze proberen op te vragen.
postgres=# select * from sample_view; ERROR: materialized view "sample_view" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command.
Nu zullen we de weergave vernieuwen om er gegevens in te laden en vervolgens de bovenstaande query uitvoeren tegen onze weergave.
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
Zoals je hierboven kunt zien, krijgen we het resultaat wanneer we onze query opnieuw uitvoeren.
Hopelijk kunt u nu gemakkelijk een gematerialiseerde weergave voor uw database maken.
Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te monitoren. Probeer het vandaag nog!