Minhas consultas do Amazon Athena demoram muito para serem executadas e os tempos de fila de consultas são altos.
Resolução
Suas consultas podem ser colocadas temporariamente em fila antes de serem executadas. As consultas podem levar muito tempo para serem executadas devido ao alto tempo de fila ou ao alto tempo de processamento do mecanismo.
Chame a API GetQueryExecution para obter seu ID de consulta. Essa API retorna informações sobre um único processamento da consulta. Você pode ver essas informações no parâmetro QueryExecutionStatistics da resposta da API. Você também pode usar o editor de consultas Athena para visualizar estatísticas e detalhes de consultas concluídas.
Maior tempo de fila
Suas consultas podem ter um tempo de espera maior devido ao alto uso de atributos no backend. O tempo de espera no Athena depende da alocação de atributos. Depois de enviar suas consultas ao Athena, as consultas recebem recursos e são processadas de acordo com os seguintes critérios:
- Carga geral de serviços
- Número de novas solicitações
Se suas consultas tiverem um tempo de fila alto, execute as seguintes ações para melhorar o desempenho da consulta:
- Distribua suas consultas por um período de tempo. Se você enviar consultas em lotes, envie pequenos lotes com mais frequência, em vez de enviar lotes grandes com menos frequência. Isso pode reduzir o tempo em que uma consulta permanece no estado QUEUED.
- Execute uma combinação de consultas simples e complexas em vez de executar um conjunto de consultas complexas ao mesmo tempo. Envie consultas simples primeiro e depois consultas complexas. Como consultas simples são processadas rapidamente, você pode alocar recursos para consultas complexas sem altos tempos de fila.
- Para consultas programadas, evite os prazos no início da hora e 30 minutos após a hora. Isso ocorre porque a maioria dos scripts automatizados e dos cron jobs são executados nesses prazos. A carga de serviço geralmente é alta nesses períodos e pode resultar em maiores tempos de fila.
- Se seu caso de uso permitir, execute suas consultas em várias regiões da AWS para distribuir a carga e ajudar a adquirir mais recursos de backend.
Importante: você pode acumular cobranças entre regiões do Amazon Simple Storage Service (Amazon S3).
Maior tempo de planejamento
Ao particionar demais a tabela, você pode aumentar o tempo de planejamento. Tabelas com centenas ou milhares de partições podem resultar em um processamento de consultas mais lento. Para melhorar o desempenho da consulta, execute qualquer uma das seguintes ações:
- Reduzir o número de partições.
- Consulte uma partição por vez e junte os resultados.
- Use a projeção de partição para acelerar o processamento de consultas de tabelas altamente particionadas e automatizar o gerenciamento de partições.
Maior tempo de processo
Se as suas consultas tiverem um tempo maior de processamento de mecanismo, faça o seguinte para melhorar a performance da consulta:
- Particione suas tabelas para restringir a quantidade de dados verificados por cada consulta. Para obter mais informações, consulte Particionar dados no Athena.
- Se o arquivo do Amazon S3 que você consulta for pequeno (geralmente inferior a 128 MB), o tempo de processamento da consulta poderá ser maior. O aumento de tempo se deve ao aumento de tarefas, como quando você abre o arquivo do S3, lista diretórios e configura a transferência de dados. Use a ferramenta S3DistCp no Amazon EMR para combinar arquivos menores do S3 em objetos maiores. Objetos maiores exigem menos solicitações do Amazon S3, o que reduz o tempo de processamento da consulta.
- Execute outras otimizações de armazenamento e consulta.
Observação: você pode enviar várias consultas ao Athena ao mesmo tempo com base nas cotas padrão relacionadas a consultas na sua região. O Athena atribui recursos com base na carga geral do serviço e no número de novas solicitações para processar consultas. Portanto, todas as suas consultas enviadas podem não ser executadas simultaneamente.
Informações relacionadas
Ajuste da performance no Athena