Ir para o conteúdo

Por que minha visão materializada não é atualizada para meu cluster do Amazon Redshift?

4 minuto de leitura
0

Minha visão materializada não é atualizada para meu cluster Amazon Redshift.

Breve descrição

Os cenários a seguir evitam ou causam longos tempos de conclusão para uma atualização de visão materializada no Amazon Redshift:

  • Erros de permissão impedem as operações REFRESH MATERIALIZED VIEW.
  • As operações simultâneas VACUUM e TRUNCATE da tabela base bloqueiam uma atualização e retornam o seguinte erro: “Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again”.
  • REFRESH MATERIALIZED VIEW não pode ser atualizado.
  • Workloads ativos bloqueiam atividades de atualização automatizadas.

Resolução

Observação: para clusters do Amazon Redshift Sem Servidor, use as visualizações de monitoramento SYS em vez das visualizações do sistema (STL, STV, SVL, SVV) que são usadas em clusters provisionados. Para obter mais informações, consulte Mapeamento da visualização do sistema para migrar para as visualizações de monitoramento do SYS.

Erros de permissão REFRESH MATERIALIZED VIEW

Para realizar uma operação REFRESH MATERIALIZED VIEW em uma visão materializada, você deve ser o proprietário. Você também deve ter o privilégio SELECT nas tabelas base subjacentes e o privilégio USAGE no esquema.

Para operações completas de recalculação, você deve ter o privilégio CREATE no esquema. Para obter mais informações sobre como definir privilégios, consulte GRANT.

Para obter mais informações sobre atualização automática, consulte Atualização automática de uma visão materializada.

O erro a seguir ocorre quando REFRESH MATERIALIZED VIEW e VACUUM são enviados para execução simultânea na tabela base: “Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again;”.

Depois que a operação for concluída, reenvie o comando REFRESH MATERIALIZED VIEW.

A atualização REFRESH MATERIALIZED VIEW falha

As operações a seguir podem causar falha na atualização das visões materializadas:

  • Você renomeia ou descarta uma coluna.
  • Você altera o tipo de uma coluna.
  • Você altera o nome de uma tabela base ou esquema.

Observação: as visualizações materializadas nessas condições podem ser consultadas, mas não podem ser atualizadas. As restrições se aplicam mesmo que a coluna não seja usada na visão materializada.

Exemplos de mensagens de erro:

  • Detail: Procedure <mv_sp_*****_2_1> does not exist.
  • column <column name> does not exist.
  • DETAIL: schema“<schema name>“ does not exist.
  • ERROR: Materialized view <my name> is unrefreshable as a base table was renamed.

Para visualizar a atividade de atualização da visão materializada, use SVL_MV_REFRESH_STATUS para um cluster provisionado pelo Amazon Redshift ou SYS_MV_REFRESH_HISTORY para um cluster do Amazon Redshift Sem Servidor.

Para descobrir se os dados na visão materializada estão obsoletos e ver as informações do estado da visualização materializada, use STV_MV_INFO, SYS_MV_STATE ou SYS_MV_REFRESH_HISTORY.

Quando uma visão materializada não puder ser atualizada, descarte-a e recrie-a para manter os dados atuais.

Operação REFRESH MATERIALIZED VIEW de longa duração

O comando REFRESH MATERIALIZED VIEW é executado como uma consulta normal em seu cluster.

Para verificar a execução da consulta, execute as seguintes ações:

  • Para verificar as consultas ativas nos dados, use STV_INFLIGHT.
  • Para monitorar os estados atuais de consulta do WLM, use STV_WLM_QUERY_STATE.
  • Para revisar consultas ativas e etapas de consulta em nós de computação, use STV_EXEC_STATE.

Para monitorar as operações REFRESH MATERIALIZED VIEW, use as seguintes visualizações do sistema:

  • Para visualizar as atualizações atuais nas tabelas do banco de dados, use STV_LOCKS.
  • Para visualizar a configuração da classe de serviço para o WLM, use STV_WLM_SERVICE_CLASS_CONFIG.
  • Para determinar se a visualização materializada recebeu uma atualização incremental ou completa, use SVL_MV_REFRESH_STATUS.

Se o desempenho do REFRESH MATERIALIZED VIEW estiver lento, consulte Melhoria no desempenho da consulta.

Status de atualização oculto durante o workload ativo

O Amazon Redshift dá prioridade ao workload em relação à atualização automática. Essa priorização pode interromper a atualização automática para manter o desempenho do workload e atrasar as atualizações de algumas visões materializadas. Algumas situações podem exigir um comportamento de atualização mais previsível para suas visões materializadas.

Para facilitar o comportamento previsível de atualização, execute as seguintes ações:

  • Execute REFRESH MATERIALIZED VIEW manualmente.
  • Agende atualizações por meio da API ou console do agendador do Amazon Redshift.
AWS OFICIALAtualizada há um ano