sql >> Database >  >> RDS >> PostgreSQL

Gematerialiseerde PostgreSQL-weergave

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!

  1. Meerdere rijen samenvoegen tot één kolom in MySQL

  2. Snelle gesplitste partitionering

  3. Een lijst met alle talen in SQL Server (T-SQL) krijgen

  4. Percona XtraBackup vergelijken met MySQL Enterprise Backup:deel één