PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Visualização materializada do PostgreSQL


As visualizações materializadas permitem armazenar fisicamente os resultados de consultas complexas e atualizá-los periodicamente. Portanto, eles são úteis nos casos em que você precisa de acesso rápido a dados para relatórios e inteligência de negócios. Veja como criar uma visualização materializada no PostgreSQL.



Visualização PostgreSQL vs Visualização Materializada


As visualizações materializadas são semelhantes às visualizações do PostgreSQL, que permitem armazenar consultas SQL para chamá-las posteriormente. No entanto, a visualização do PostgreSQL permite armazenar apenas a consulta SQL e não seu resultado. As visualizações materializadas permitem armazenar fisicamente o resultado da consulta e atualizá-los periodicamente. Como resultado, as visualizações materializadas são mais rápidas do que as visualizações do PostgreSQL.

Bônus de leitura:Como obter a última linha por grupo no PostgreSQL



Como criar uma visualização materializada no PostgreSQL


Você pode criar uma visão materializada no PostgreSQL usando a instrução CREATE MATERIALIZED VIEW conforme mostrado abaixo.
CREATE MATERIALIZED VIEW view_name
AS query 
WITH [NO] DATA;

Na declaração acima, você precisa mencionar view_name bem como a consulta cujo resultado você deseja armazenar na visualização materializada.

Por fim, você também pode especificar a opção WITH DATA se desejar carregar dados na visualização no momento de sua criação. Se você mencionar WITH NO DATA, a exibição será sinalizada como ilegível e você não poderá consultar dados da exibição até carregar dados nela.

Bônus de leitura:Função de criação do PostgreSQL



Atualização da visualização materializada do PostgreSQL


Você pode carregar dados na visualização materializada usando a instrução REFRESH MATERIALIZED VIEW conforme mostrado
REFRESH MATERIALIZED VIEW view_name

Você também pode usar a instrução acima para atualizar a visualização materializada.

Observe que a instrução REFRESH MATERIALIZED VIEW bloqueia os dados da consulta para que você não possa executar consultas neles. Você pode evitá-lo usando a opção CONCORRENTEMENTE
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name

Nesse caso, o PostgreSQL cria uma visão temporária, compara-a com a original e faz as inserções, atualizações e exclusões necessárias. Como resultado, a opção CONCURRENTLY está disponível apenas para visualizações materializadas que possuem um índice exclusivo.

Para atualizar automaticamente a visualização materializada periodicamente, você pode executar REFRESH MATERIALIZED VIEW por meio de um script automatizado.

Bônus de leitura:PostgreSQL Criar Esquema



Remover visualizações materializadas


Você pode excluir visualizações materializadas usando a instrução DROP MATERIALIZED VIEW.
DROP MATERIALIZED VIEW view_name



Exemplos de visualização materializada


Vejamos alguns exemplos de visualizações materializadas.

Aqui está a consulta para criar uma visualização materializada chamada sample_view
postgres=# create materialized view sample_view
           as select * from sales
           with no data;

Na consulta acima, mencionamos a opção WITH NO DATA para que a visualização não tenha nenhum dado e dê um erro quando tentarmos consultá-la.
postgres=# select * from sample_view;
ERROR: materialized view "sample_view" has not been populated
HINT: Use the REFRESH MATERIALIZED VIEW command.

Agora, atualizaremos a visualização para carregar dados nela e, em seguida, executaremos a consulta acima em nossa visualização.
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

Como você pode ver acima, quando executamos nossa consulta novamente, obtemos o resultado.

Espero que agora você possa criar facilmente uma visão materializada para seu banco de dados.

A Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!