Por que minha visualização materializada não está sendo atualizada em meu cluster do Amazon Redshift?

Última atualização: 26/10/2022

Minha visão materializada não é atualizada em meu cluster do Amazon Redshift. Por que isso está acontecendo e como faço para atualizar minha visualização materializada?

Breve descrição

Os seguintes cenários podem fazer com que uma visualização materializada do Amazon Redshift não seja atualizada ou leve muito tempo para ser concluída:

  • REFRESH MATERIALIZED VIEW está falhando com erro de permissão
  • Você vê o erro: Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently (Operação inválida: não foi possível atualizar a visualização materializada mv_name porque uma tabela base foi alterada fisicamente devido à limpeza ou truncagem simultânea). Tente novamente;
  • REFRESH MATERIALIZED VIEW não é atualizável
  • REFRESH MATERIALIZED VIEW foi enviado e está em execução há muito tempo
  • A atividade de atualização não é exibida em uma atualização automatizada devido a uma workload ativa

Resolução

REFRESH MATERIALIZED VIEW está falhando com erro de permissão

Você deve ser o proprietário para realizar uma operação REFRESH MATERIALIZED VIEW em uma visualização materializada. Além disso, você deve ter os seguintes privilégios:

  • Privilégio SELECT nas tabelas base subjacentes
  • Privilégio USAGE no esquema

Se a visualização materializada for uma recálculo completo em vez de uma atualização incremental, também será necessário ter o privilégio CREATE no esquema. Para definir privilégios, consulte GRANT. Para obter mais informações, consulte Atualizar automaticamente uma visualização materializada.

Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently (Operação inválida: não foi possível atualizar a visualização materializada mv_name porque uma tabela base foi alterada fisicamente devido à limpeza ou truncagem simultânea). Tente novamente;

O erro ocorre quando REFRESH MATERIALIZED VIEW e VACUUM são enviados para execução simultânea na tabela base. Depois que a operação for concluída, será possível reenviar REFRESH MATERIALIZED VIEW.

REFRESH MATERIALIZED VIEW não é atualizável

Visualizações materializadas não atualizáveis podem ser causadas por operações que:

  • Renomeiam ou descartam uma coluna.
  • Alteram o tipo de uma coluna.
  • Alteram o nome de uma tabela ou esquema base

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

Para descobrir se os dados na visualização materializada estão obsoletos e as informações sobre o estado da visualização materializada, use STV_MV_INFO. Para visualizar a atividade de atualização da visualização materializada, use SVL_MV_REFRESH_STATUS. Nesse estado não atualizável da visualização materializada, é necessário descartar e recriar a visualização materializada para manter a visualização materializada atualizada.

A seguir estão exemplos de mensagens de erro que você poderá ver:

```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 <mv namme> is unrefreshable as a base table was renamed.```

REFRESH MATERIALIZED VIEW foi enviado e está em execução há muito tempo

REFRESH MATERIALIZED VIEW funciona como uma consulta normal executada no cluster. Para confirmar se a consulta está sendo executada, faça o seguinte:

  • Para visualizar as consultas ativas em execução nos dados, use STV_INFLIGHT.
  • Para registrar o estado atual das consultas monitoradas pelo gerenciamento de workloads (WLM), use STV_WLM_QUERY_STATE.
  • Para descobrir informações sobre consultas e etapas de consulta que estão sendo executadas ativamente nos nós de computação, use STV_EXEC_STATE.

A performance da operação REFRESH MATERIALIZED VIEW está sujeita aos seguintes fatores:

  • Bloqueios de tabelas: para visualizar as atualizações atuais nas tabelas do banco de dados, consulte STV_LOCKS.
  • Recursos alocados: para ver a configuração da classe de serviço para o WLM, consulte STV_WLM_SERVICE_CLASS_CONFIG.
  • Tipo de atualização: atualização incremental ou completa. Para ver o tipo de atualização ao qual a view materializada foi submetida, consulte SVL_MV_REFRESH_STATUS.

Se você tiver uma performance lenta de REFRESH MATERIALIZED VIEW, consulte Melhoria da performance de consultas.

A atividade de atualização não é exibida em uma atualização automatizada devido a uma workload ativa

O Amazon Redshift prioriza suas workloads em vez da atualização automática. Essa priorização pode interromper a atualização automática para preservar a performance de sua workload e pode atrasar a atualização de algumas visualizações materializadas. Em alguns casos, suas visualizações materializadas podem exigir um comportamento de atualização mais determinístico. Para criar um comportamento de atualização mais determinístico, use o seguinte:

  • Atualização manual conforme descrito em REFRESH MATERIALIZED VIEW
  • Atualização programada usando as operações da API do agendador do Amazon Redshift ou o console

Para obter mais informações, consulte Atualizar automaticamente uma visualização materializada.


Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?