Amazon Redshift Vistas materializadas Permite melhorar significativamente o desempenho de consultas complexas. As visualizações materializadas armazenam resultados de consultas pré-computadas que futuras consultas semelhantes podem utilizar, oferecendo uma solução poderosa para ambientes de information warehouse, onde os aplicativos geralmente precisam executar consultas que entram em recursos contra tabelas grandes. Essa técnica de otimização aprimora a velocidade e a eficiência da consulta, permitindo que muitas etapas de computação sejam ignoradas, com os resultados pré -computados retornados diretamente. As vistas materializadas são particularmente úteis para acelerar consultas previsíveis e repetidas, como as usadas para preencher os painéis ou gerar relatórios. Em vez de executar repetidamente as operações intensivas em recursos, os aplicativos podem consultar uma visão materializada e recuperar resultados pré-computados, levando a ganhos significativos de desempenho e melhoria da experiência do usuário. Além disso, as visualizações materializadas podem ser atualizadas de forma incremental, aplicando a lógica apenas aos dados alterados quando as alterações da linguagem de manipulação de dados (DML) são feitas nas tabelas base subjacentes, otimizando ainda mais o desempenho e mantendo a consistência dos dados.
Este publish demonstra como maximizar o seu Amazon Redshift Desempenho Desempenho, implementando efetivamente as visualizações materializadas. Exploraremos a criação de vistas materializadas e a implementação de estratégias de atualização aninhadas, onde as visões materializadas são definidas em termos de outras visões materializadas para expandir suas capacidades. Essa abordagem é particularmente poderosa para reutilizar junções pré -computadas com diferentes opções agregadas, reduzindo significativamente o tempo de processamento para cargas de trabalho complexas de ETL e BI. Vamos explorar como implementar esse recurso poderoso em seu ambiente de information warehouse.
Introdução a vistas materializadas aninhadas
Vistas materializadas aninhadas no Amazon Redshift permitem criar vistas materializadas com base em outras vistas materializadas. Esse recurso permite uma estrutura hierárquica de resultados pré -computados, aumentando significativamente o desempenho da consulta e a eficiência do processamento de dados. Com vistas materializadas aninhadas, você pode criar abstrações de dados de várias camadas, criando vistas cada vez mais complexas e especializadas adaptadas a necessidades comerciais específicas. Essa abordagem em camadas oferece várias vantagens:
- Desempenho de consulta aprimorado: Cada nível da hierarquia de visão materializada aninhada serve como cache, permitindo que consultas acessem rapidamente dados pré-computados sem a necessidade de atravessar as tabelas base subjacentes.
- Carga computacional reduzida: Ao descarregar o trabalho computacional para o processo de atualização de exibição materializado, você pode reduzir significativamente o tempo de execução e a utilização de recursos de suas consultas diárias.
- Modelagem de dados simplificados: As vistas materializadas aninhadas permitem criar um modelo de dados mais modular e extensível, onde cada camada representa um conceito de negócios ou caso de uso específico.
- Refresca incremental: O desvio para o Redshift materializou as atualizações incrementais, permitindo atualizar apenas os dados alterados na hierarquia aninhada, otimizando ainda mais o processo de atualização.
- Vistas materializadas em cascata: As visualizações materializadas do desvio para o vermelho suportam o manuseio automático de cargas de trabalho no estilo de extrato, carga e transformação (ELT), minimizando a necessidade de criação guide e gerenciamento desses processos.
Você pode implementar visualizações materializadas aninhadas usando o Crie visão materializada Declaração, que permite referenciar outras vistas materializadas na definição. Os casos de uso comuns incluem:
- Pipelines de transformação de dados modulares
- Agregações hierárquicas para análise progressiva
- Pipelines de validação de dados em vários níveis
- Gerenciamento de instantâneos de dados históricos
- Relatórios de BI otimizados com resultados pré -computados
Arquitetura

Diagrama arquitetônico que descreve a estrutura de visão materializada do Amazon Redshift. Mostra várias tabelas de base (laranja) conectando a vistas materializadas (vermelho), com conexões com uma camada de visualização aninhada e tabela de compartilhamento de dados (verde). Inclui pontos de integração para usuários e visualização do QuickSight.
- Tabela de base (s): Estas são as tabelas base subjacentes que contêm os dados brutos do seu information warehouse. Pode ser tabelas locais ou tabelas de compartilhamento de dados.
- Visão materializada base (s): Essas são as vistas materializadas de primeiro nível que são criadas diretamente na parte superior das tabelas de base. Essas visualizações encapsulam transformações e agregações comuns de dados. Isso pode servir como base para a visão materializada aninhada e também ser acessada diretamente pelos usuários.
- Visão materializada aninhada (s): Estes são o segundo nível (ou superior) visualizações materializadas criadas com base nas visualizações materializadas base. A visão materializada aninhada pode agregar, filtrar ou transformar ainda mais os dados das vistas mestilizadas básicas.
- Aplicativo/Usuários/Relatórios de BI: As ferramentas de aplicação ou inteligência de negócios (BI) interagem com as vistas materializadas aninhadas para gerar relatórios e painéis. As visões aninhadas fornecem uma estrutura de dados mais otimizada e pré -computada para consultas e relatórios eficientes.
Criando e usando vistas materializadas aninhadas
Para demonstrar como as visões materializadas aninhadas funcionam no Amazon Redshift, usaremos o conjunto de dados TPC-DS. Criaremos três consultas usando as tabelas Retailer, Store_sales, Cliente e Customer_Address para simular relatórios de information warehouse. Este exemplo ilustrará como vários relatórios podem compartilhar conjuntos de resultados e como as visualizações materializadas podem melhorar a eficiência dos recursos e o desempenho da consulta.
SELECT cust.c_customer_id,
cust.c_first_name,
cust.c_last_name,
gross sales.ss_item_sk,
gross sales.ss_quantity,
cust.c_current_addr_sk
FROM store_sales gross sales INNER JOIN buyer cust
ON gross sales.ss_customer_sk = cust.c_customer_sk;
SELECT cust.c_customer_id,
cust.c_first_name,
cust.c_last_name,
gross sales.ss_item_sk,
gross sales.ss_quantity,
cust.c_current_addr_sk,
retailer.s_store_name
FROM store_sales gross sales INNER JOIN buyer cust
ON gross sales.ss_customer_sk = cust.c_customer_sk
INNER JOIN retailer retailer
ON gross sales.ss_store_sk = retailer.s_store_sk;
SELECT cust.c_customer_id,
cust.c_first_name, cust.c_last_name,
gross sales.ss_item_sk,
gross sales.ss_quantity,
addr.ca_state
FROM store_sales gross sales INNER JOIN buyer cust
ON gross sales.ss_customer_sk = cust.c_customer_sk
INNER JOIN retailer retailer
ON gross sales.ss_store_sk = retailer.s_store_sk
INNER JOIN customer_address addr
ON cust.c_current_addr_sk = addr.ca_address_sk;
Observe que a junção entre store_sales e tabelas de clientes está presente em todas as 3 consultas (painéis).
A segunda consulta adiciona uma junção à mesa da loja e a terceira consulta é a segunda com uma junção further com a tabela Customer_Address. Esse padrão é comum em cenários de inteligência de negócios. Como mencionado anteriormente, o uso de uma exibição materializada pode acelerar as consultas porque o conjunto de resultados é armazenado e pronto para ser entregue ao usuário, evitando o reprocessamento dos mesmos dados. Em casos como esse, podemos usar vistas materializadas aninhadas para reutilizar dados já processados. Ao transformar nossas consultas em um conjunto de visões materializadas aninhadas, o resultado seria o mais abaixo:
CREATE MATERIALIZED VIEW StoreSalesCust as
SELECT cust.c_customer_id,
cust.c_first_name,
cust.c_last_name,
gross sales.ss_item_sk,
gross sales.ss_store_sk,
gross sales.ss_quantity,
cust.c_current_addr_sk
FROM store_sales gross sales INNER JOIN buyer cust
ON gross sales.ss_customer_sk = cust.c_customer_sk;
CREATE MATERIALIZED VIEW StoreSalesCustStore as
SELECT storesalescust.c_customer_id,
storesalescust.c_first_name,
storesalescust.c_last_name,
storesalescust.ss_item_sk,
storesalescust.ss_quantity,
storesalescust.c_current_addr_sk,
retailer.s_store_name
FROM StoreSalesCust storesalescust INNER JOIN retailer retailer
ON storesalescust.ss_store_sk = retailer.s_store_sk;
CREATE MATERIALIZED VIEW StoreSalesCustAddress as
SELECT storesalescuststore.c_customer_id,
storesalescuststore.c_first_name,
storesalescuststore.c_last_name,
storesalescuststore.ss_item_sk,
storesalescuststore.ss_quantity,
addr.ca_state
FROM StoreSalesCustStore storesalescuststore INNER JOIN customer_address addr
ON storesalescuststore.c_current_addr_sk = addr.ca_address_sk;
As vistas materializadas aninhadas podem melhorar o desempenho e a eficiência dos recursos reutilizando os resultados da visualização inicial, minimizando junções redundantes e trabalhando com conjuntos de resultados menores. Isso cria uma estrutura hierárquica em que as vistas materializadas dependem uma da outra. Devido a essas dependências, você deve atualizar as visualizações em uma ordem específica.

Resultado da consulta SQL Indicando problema de dependência para atualizar visualização materializada armazenossalescustaddress.
Com a nova opção “Atualizar a vista materializada mv_name Cascade ”Você poderá atualizar toda a cadeia de dependências para as vistas materializadas que você tem. Observe que, neste exemplo, estamos usando a terceira visão materializada, StoreSalescustAddress, e isso atualizará todas as três vistas materializadas porque elas dependem uma da outra.

Consulta SQL mostrando uma atualização bem -sucedida em cascata da visão materializada do StoreSalesCustAddress no Amazon Redshift.
Se usarmos a segunda visão materializada com a opção Cascade, atualizaremos apenas as primeiras e segundas vistas materializadas, deixando a terceira inalterada. Isso pode ser útil quando precisamos manter algumas visualizações materializadas com menos dados atuais do que outros.
O Svl_mv_refresh_status A exibição do sistema revela a sequência de atualização de vistas materializadas. Ao desencadear uma atualização em cascata no StoreSalesCustAddress, o sistema segue a cadeia de dependência que estabelecemos: o StoreSalescust atualiza primeiro, seguido pela loja de armazenamento e, finalmente, o armazenamento de armazenamento. Isso demonstra como a operação de atualização respeita a estrutura hierárquica de nossas visões materializadas.

O resultado da consulta SQL de svl_mv_refresh_status mostrando recomputação bem -sucedida de três vistas materializadas.
Considerações
Considere uma cadeia de dependência onde o armazenamento de armazenamento (a) → StoreSalesCust Sstore (B) → StoreSalesCustAddress (C).
- O comportamento de atualização em cascata funciona da seguinte maneira:
- Ao atualizar C com cascata: A, B e C serão todos atualizados.
- Quando refrescante B com cascata: apenas A e B serão atualizados.
- Ao atualizar uma cascata: apenas A será atualizado.
- Se você precisar especificamente atualizar A e C, mas não B, deve executar operações de atualização separadas sem usar o Cascade – a primeira atualização A e a atualização diretamente C.
Melhores práticas para visão materializada
- Melhore a consulta de origem: comece com uma instrução SELECT bem otimizada para sua exibição materializada. Isso é especialmente importante para visões que precisam de reconstruções completas durante cada atualização.
- Planeje estratégias de atualização: Ao criar vistas materializadas que dependem de outras vistas materializadas, você não pode usar a atualização automática de sim. Em vez disso, implemente mecanismos de atualização orquestrados usando a API de dados do Redshift com o Amazon Eventbridge para agendamento e funções de etapas da AWS para gerenciamento do fluxo de trabalho.
- Alavancar as teclas de distribuição e classificar: Configure corretamente as teclas de distribuição e classificar corretamente em visualizações materializadas com base em seus padrões de consulta para otimizar o desempenho. As teclas bem escolhidas melhoram a velocidade da consulta e reduzem as operações de E/S.
- Considere a capacidade de atualização incremental: quando possível, projete as vistas materializadas para suportar a atualização incremental, que apenas atualiza os dados alterados em vez de reconstruir toda a visão, melhorando bastante o desempenho da atualização.
- Para saber mais sobre o recurso Automated Materilized View (Auto-MV) para aumentar o desempenho da carga de trabalho, este sistema inteligente monitora sua carga de trabalho e cria automaticamente visualizações materializadas para melhorar o desempenho geral. Para obter informações mais detalhadas sobre esse recurso, consulte Vistas materializadas automatizadas.
Limpar
Full as seguintes etapas para limpar seus recursos:
- Exclua o cluster de réplica provisionado de desvio para o vermelho ou os pontos de extremidade sem servidor Redshift criados para este exercício
ou
- Solte apenas a visão materializada que você criou para testar
Conclusão
Este publish mostrou como criar vistas materializadas do Amazon Redshift aninhadas e atualizam as vistas da criança, usando a nova opção Cascade de atualização. Você pode criar rapidamente e manter os pipelines de processamento de dados eficientes e estender perfeitamente os benefícios de execução de consulta de baixa latência das visualizações materializadas para a análise de dados.
Sobre os autores
Ritesh Kumar Sinha é um arquiteto de soluções especializadas em análise baseado em São Francisco. Ele ajudou os clientes a criar soluções escaláveis de information warehousing e massive information por mais de 16 anos. Ele adora projetar e criar soluções de ponta a ponta eficientes na AWS. Em seu tempo livre, ele adora ler, caminhar e fazer ioga.
Raza Hafeez é um gerente sênior de produto da Amazon Redshift. Ele tem mais de 13 anos de experiência profissional na criação e otimização de dados de dados corporativos e é apaixonado por permitir que os clientes realizem o poder de seus dados. Ele é especialista em migrar os information warehouses da empresa para a arquitetura de dados modernos da AWS.
Ricardo Serafim é um arquiteto de soluções especializadas em análise de análise na AWS. Ele ajuda empresas da Information Warehouse Options desde 2007.