Materializované pohledy vám umožňují fyzicky ukládat výsledky složitých dotazů a pravidelně je aktualizovat. Jsou tedy užitečné v případech, kdy potřebujete rychlý přístup k datům pro reporting a business intelligence. Zde je návod, jak vytvořit materializovaný pohled v PostgreSQL.
Pohled PostgreSQL vs. Materializované zobrazení
Materializované pohledy jsou podobné pohledům PostgreSQL, které vám umožňují ukládat dotazy SQL a volat je později. Pohled PostgreSQL však umožňuje uložit pouze SQL dotaz a ne jeho výsledek. Materializované pohledy vám umožňují fyzicky uložit výsledek dotazu a pravidelně je aktualizovat. V důsledku toho jsou materializované pohledy rychlejší než pohledy PostgreSQL.
Bonusové čtení:Jak získat poslední řádek na skupinu v PostgreSQL
Jak vytvořit materializovaný pohled v PostgreSQL
Materializovaný pohled můžete vytvořit v PostgreSQL pomocí příkazu CREATE MATERIALIZED VIEW, jak je ukázáno níže.
CREATE MATERIALIZED VIEW view_name AS query WITH [NO] DATA;
Ve výše uvedeném prohlášení musíte uvést view_name stejně jako dotaz jehož výsledek chcete uložit v materializovaném pohledu.
Nakonec můžete také zadat volbu S DATA, pokud chcete načíst data do pohledu v době jeho vytvoření. Pokud zmíníte WITH NO DATA, bude zobrazení označeno jako nečitelné a nebudete moci dotazovat data ze zobrazení, dokud do něj data nenačtete.
Bonusové čtení:Funkce vytvoření PostgreSQL
Obnovení materializovaného zobrazení PostgreSQL
Data můžete načíst do materializovaného zobrazení pomocí příkazu REFRESH MATERIALIZED VIEW, jak je znázorněno
REFRESH MATERIALIZED VIEW view_name
Výše uvedené prohlášení můžete také použít k obnovení materializovaného pohledu.
Upozorňujeme, že příkaz REFRESH MATERIALIZED VIEW uzamkne data dotazu, takže na ně nelze spouštět dotazy. Můžete se tomu vyhnout pomocí možnosti SOUČASNĚ
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name
V tomto případě PostgreSQL vytvoří dočasný pohled, porovná jej s původním a provede potřebné vkládání, aktualizace a mazání. V důsledku toho je možnost CONCURRENTLY dostupná pouze pro materializované pohledy, které mají jedinečný index.
Chcete-li pravidelně automaticky obnovovat materializované zobrazení, můžete spustit OBNOVIT MATERIALIZED VIEW prostřednictvím automatického skriptu.
Bonusové čtení:Vytvořte schéma PostgreSQL
Odebrat materializovaná zobrazení
Materializované pohledy můžete odstranit pomocí příkazu DROP MATERIALIZED VIEW.
DROP MATERIALIZED VIEW view_name
Příklady materializovaného zobrazení
Podívejme se na některé příklady materializovaných pohledů.
Zde je dotaz na vytvoření materializovaného zobrazení s názvem ukázkové zobrazení
postgres=# create materialized view sample_view as select * from sales with no data;
Ve výše uvedeném dotazu jsme zmínili možnost WITH NO DATA, takže pohled nebude obsahovat žádná data a při pokusu o dotaz zobrazí chybu.
postgres=# select * from sample_view; ERROR: materialized view "sample_view" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command.
Nyní aktualizujeme pohled, abychom do něj načetli data, a poté spustíme výše uvedený dotaz proti našemu pohledu.
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
Jak můžete vidět výše, když znovu spustíme náš dotaz, dostaneme výsledek.
Doufejme, že nyní můžete snadno vytvořit materializovaný pohled na vaši databázi.
Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Zkuste to ještě dnes!