Ir para o conteúdo

Por que minhas consultas são executadas por mais tempo após a manutenção do Amazon Redshift?

3 minuto de leitura
0

Minha consulta e o desempenho geral do cluster diminuem após um período de manutenção no Amazon Redshift.

Breve descrição

Durante uma atualização de versão, o Amazon Redshift limpa o cache de consultas e o cache de compilação. Quando você executa uma consulta pela primeira vez após a atualização, o tempo de compilação é maior. No entanto, o desempenho melhora gradualmente à medida que o Amazon Redshift recria seu cache.

O Amazon Redshift não altera as versões do cluster para todas as ações do período de manutenção. Para identificar alterações de versão, verifique a coluna redshift_version na tabela SYS_QUERY_HISTORY.

Para mais informações sobre os tipos de cache no Amazon Redshift, consulte Armazenamento em cache dos resultados e Código compilado. Para mais informações sobre o desempenho da consulta, consulte Fatores que afetam a performance da consulta.

Resolução

Analisar o desempenho da consulta antes e depois da manutenção

Identifique as consultas que foram executadas antes e depois da manutenção. É possível usar o console de monitoramento de consultas ou a visualização do sistema SYS_QUERY_HISTORY.

Para encontrar as últimas 20 consultas do usuário, execute a seguinte consulta:

SELECT * FROM sys_query_history
WHERE user_id>1
ORDER BY start_time desc
limit 20;

Na saída, use a coluna user_query_hash para comparar consultas com o mesmo texto da consulta. Ou use generic_query_hash para comparar consultas com um texto de consulta semelhante, mas com literais de consulta diferentes.

Para ver cada vez que você executou uma consulta específica nos últimos 7 dias, execute a seguinte consulta:

SELECT * FROM sys_query_history
WHERE user_query_hash = 'ExampleText'
ORDER BY start_time desc;

Observação: substitua ExampleText pelo valor do hash da consulta.

Na saída, compare o valor de compile_time em diferentes execuções. O tempo de compilação de uma consulta que você executou imediatamente após a manutenção pode ser maior.

Para reduzir os tempos de compilação, programe as principais consultas para serem executadas após a manutenção ou prepare as consultas críticas fora do horário de pico.

Observação: o mecanismo de execução de consultas compila códigos diferentes para os protocolos de conexão Java Database Connectivity (JDBC) e Microsoft Open Database Connectivity (ODBC). Se você tiver dois clientes que usam protocolos diferentes, cada cliente incorrerá o custo inicial para compilar o código. No entanto, os clientes que usam o mesmo protocolo compartilham o código em cache. Quando você usa o JDBC para se conectar ao cluster e executar uma consulta, o Amazon Redshift salva o cache somente para conexões JDBC. Se você executar a mesma consulta em um cliente que usa ODBC, o Amazon Redshift gera outro cache para a conexão ODBC.

Solucionar problemas

Às vezes, quando as compilações de consultas mostram pouca diferença antes e depois da manutenção, pode ocorrer um problema de desempenho não relacionado. Use o Console de monitoramento de consultas e bancos de dados para monitorar picos incomuns nas métricas. Compare os tempos de compilação para identificar a origem do problema.

Se você não encontrar picos, mas ainda estiver enfrentando um problema, abra um chamado de suporte.

Informações relacionadas

SVL_COMPILE

AWS OFICIALAtualizada há 6 meses