0Pricing
SQL Academy · Aula

Visões materializadas e estratégias de REFRESH

Persista o resultado de uma consulta dispendiosa com MATERIALIZED VIEW e atualize-o conforme uma agenda ou sob demanda.

Visões materializadas e estratégias de REFRESH é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Visualização materializada = resultado salvo

Ao contrário de uma visualização comum, uma visualização materializada armazena em disco o resultado de seu SELECT. As consultas acessam os dados armazenados — rapidamente. Atualize sob demanda.

CREATE MATERIALIZED VIEW daily_revenue AS
SELECT date_trunc('day', created_at) AS day,
       SUM(total) AS revenue
FROM orders
GROUP BY 1;

Consulta

As consultas são apenas SELECTs nos dados materializados:

SELECT * FROM daily_revenue WHERE day >= NOW() - INTERVAL '30 days';

REFRESH MATERIALIZED VIEW

Recalcule o resultado. Bloqueia a visualização exclusivamente:

REFRESH MATERIALIZED VIEW daily_revenue;
-- Selects on the view block during refresh.

REFRESH MATERIALIZED VIEW CONCURRENTLY

Atualização sem bloqueio — os leitores continuam sendo atendidos pelos dados antigos até que os novos estejam prontos. Exige um índice UNIQUE na visualização:

CREATE UNIQUE INDEX ON daily_revenue (day);

REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;

Índices em visualizações materializadas

Pode criar um índice em uma visualização materializada como em qualquer tabela — isso acelera as consultas:

CREATE INDEX daily_revenue_day_idx ON daily_revenue (day DESC);

Quando materializar

Utilize visualizações materializadas quando:

  • A consulta subjacente for dispendiosa
  • O resultado tolerar ficar ligeiramente desatualizado
  • A consulta for executada muitas vezes entre atualizações

Atualização programada

Não há um agendador integrado. Utilize pg_cron, uma tarefa cron do sistema operacional ou o agendador do aplicativo:

-- Via pg_cron extension:
SELECT cron.schedule('refresh_daily', '0 1 * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;');

Atualização incremental

O PostgreSQL não oferece atualização incremental nativa — cada REFRESH recalcula tudo desde o início. Para agregação incremental, considere:

  • "Tabelas de resumo" criadas manualmente com base em gatilhos
  • Agregações contínuas do TimescaleDB
  • A extensão pg_ivm (visualizações materializadas incrementais)

Ler tabelas subjacentes sem afetar as leituras

A atualização CONCURRENT lê as tabelas subjacentes em um instantâneo transacional — não as bloqueia. Porém, a própria atualização pode ser lenta em conjuntos de dados enormes.

Uso de disco

Uma visualização materializada duplica o armazenamento dos seus dados. Planeje o espaço em disco adequadamente.

Combinação com particionamento

Para séries temporais enormes, particione a visualização materializada (ou utilize TimescaleDB):

CREATE MATERIALIZED VIEW orders_summary AS ... ;
CREATE INDEX ON orders_summary (day);
-- For very large views, consider regular table + manual upsert pattern.

Quando não utilizar

Se suas leituras tolerarem SQL com dados atuais e a consulta subjacente já for rápida, poupe o trabalho de manutenção das atualizações. Visualizações materializadas são uma compensação — atualidade por velocidade.

Recapitulação

Visualizações materializadas armazenam em cache os resultados das consultas.

  • Armazenadas em disco, indexadas e rápidas
  • REFRESH manualmente ou conforme uma programação
  • CONCURRENTLY exige um índice UNIQUE
  • Utilize para agregações dispendiosas e ligeiramente desatualizadas

Verificação rápida

O que REFRESH MATERIALIZED VIEW CONCURRENTLY exige que a atualização básica não exige?

Perguntas Frequentes

A aula “Visões materializadas e estratégias de REFRESH” é grátis?

Sim — o texto completo de “Visões materializadas e estratégias de REFRESH” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Visões materializadas e estratégias de REFRESH”?

Persista o resultado de uma consulta dispendiosa com MATERIALIZED VIEW e atualize-o conforme uma agenda ou sob demanda. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Visões materializadas e estratégias de REFRESH”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Visões simples: reutilização lógica
  2. Visões atualizáveis e gatilhos INSTEAD OF
  3. Visões materializadas e estratégias de REFRESH
  4. Quando pré-agregar
← Voltar para SQL Academy