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
oufailed
), 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.