A consulta leva muito tempo - Amazon Redshift

A consulta leva muito tempo

A consulta pode demorar muito pelos motivos a seguir. Sugerimos as abordagens de solução de problemas a seguir.

As tabelas não estão otimizadas

Defina a chave de classificação, estilo de distribuição e codificação de compactação das tabelas para aproveitar a vantagem completa do processamento paralelo. Para obter mais informações, consulte Otimização automática de tabelas.

A consulta esta gravando em disco

Suas consultas podem estar gravando em disco para, pelo menos, parte da execução da consulta. Para ter mais informações, consulte Aprimoramento do desempenho das consultas.

A consulta deve esperar a conclusão de outras consultas

Você pode melhorar a performance geral do sistema criando filas de consultas e atribuindo tipos de consultas diferentes para as filas adequadas. Para ter mais informações, consulte Gerenciamento do workload.

As consultas não estão otimizadas

Analise o plano de explicação para encontrar oportunidades para reescrever consultas ou otimizar o banco de dados. Para ter mais informações, consulte Criar e interpretar um plano de consulta.

A consulta precisa de mais memória para execução

Se uma consulta específica precisa de mais memória, você pode ampliar a memória disponível aumentando o wlm_query_slot_count.

O banco de dados exige a execução de um comando VACUUM

Execute o comando VACUUM sempre que você adicionar, excluir ou modificar um grande número de linhas, a menos que carregue seus dados por ordem de chave de classificação. O comando VACUUM reorganiza seus dados para manter a ordem de classificação e restaurar a performance. Para ter mais informações, consulte Vacuum de tabelas.

Recursos adicionais para solucionar problemas com consultas de longa duração

Veja a seguir os tópicos de visualização do sistema e outras seções da documentação que são úteis para o ajuste de consultas:

  • A visualização do sistema STV_INFLIGHT mostra quais consultas estão sendo executadas no cluster. Pode ser útil usá-la junto com STV_RECENTS para determinar quais consultas estão em execução ou foram concluídas recentemente.

  • SYS_QUERY_HISTORY é útil para a solução de problemas. Ele mostra consultas DDL e DML com propriedades relevantes, como seu status atual (por exemplo, running ou failed), o tempo que cada uma levou para ser executada e se uma consulta foi executada em um cluster de escalabilidade simultânea.

  • STL_QUERYTEXT captura o texto da consulta para os comandos SQL. Além disso, SVV_QUERY_INFLIGHT, que une STL_QUERYTEXT a STV_INFLIGHT, mostra mais metadados de consulta.

  • Um conflito de bloqueio de transação pode ser uma possível fonte de problemas de performance da consulta. Para obter informações sobre transações que no momento mantêm bloqueios em tabelas, consulte SVV_TRANSACTIONS.

  • Identificar consultas que são os principais candidatos para ajuste fornece uma consulta de solução de problemas que ajuda a determinar quais consultas executadas recentemente consumiram mais tempo. Isso pode ajudar você a concentrar seus esforços em questões que precisam ser melhoradas.

  • Se você quiser explorar mais o gerenciamento de consultas e entender como gerenciar filas de consultas, Gerenciamento do workload mostra como fazer isso. O gerenciamento da workload é um atributo avançado, e recomendamos o gerenciamento automatizado da workload na maioria dos casos.