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