Por que minhas consultas do Amazon Athena demoram muito para serem executadas?

5 minuto de leitura
0

Minhas consultas do Amazon Athena estão demorando muito para serem executadas. Os tempos de enfileiramento de consultas são altos. Como posso acelerar o processamento de consultas?

Breve descrição

O Athena é um serviço de consulta interativo sem servidor. Depois que você enviar suas consultas ao Athena, elas serão executadas em um pool de atributos no backend. Esses atributos são compartilhados por todos os usuários da região. Suas consultas podem ser colocadas temporariamente em fila antes de serem executadas. Geralmente, as consultas demoram muito para serem executadas devido ao maior tempo de enfileiramento ou ao maior tempo de processamento do mecanismo.

Resolução

Chame a API GetQueryExecution para obter seu ID de consulta. Essa API retorna informações sobre um único processamento da consulta. As informações incluem detalhes úteis, como os seguintes:

  • Tempo gasto pela consulta na fila (QueryQueueTimeInMillis)
  • Tempo gasto pela consulta no planejamento (QueryPlanningTimeInMillis)
  • Tempo de processamento do motor (EngineExecutionTimeInMillis)

Essas informações podem ser visualizadas no parâmetro Statistics da resposta da API.

Maior tempo de enfileiramento

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 são processadas atribuindo recursos com base no seguinte:

  • Carga geral de serviços
  • Número de solicitações recebidas

Se suas consultas tiverem um tempo de espera maior, faça o seguinte para melhorar a performance da consulta:

  1. Considere distribuir 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 e melhorar o tempo geral de processamento da consulta.
  2. Execute uma combinação de consultas simples e complexas em vez de executar um conjunto de consultas complexas ao mesmo tempo. Além disso, considere enviar consultas simples primeiro, seguidas de consultas complexas. Como as consultas simples são processadas rapidamente, recursos podem ser alocados às consultas complexas sem resultar em um maior tempo de espera.
  3. Se você estiver agendando suas consultas em cenários, como gerar relatórios periódicos ou carregar novas partições, evite agendá-las no início da horário e 30 minutos após os períodos de hora. A maioria dos scripts automatizados e trabalhos cron é executada durante esses períodos. Portanto, a carga de serviço geralmente é maior durante esses períodos, resultando em maiores tempos de enfileiramento.
  4. Se seu caso de uso permitir, execute suas consultas em várias regiões. Isso pode distribuir a carga e ajudar a adquirir mais recursos de backend. Essa abordagem pode reduzir o tempo de enfileiramento de consultas.
    Importante: você pode acumular cobranças entre regiões do Amazon Simple Storage Service (Amazon S3).

Maior tempo de planejamento

Se as suas consultas tiverem um tempo de planejamento maior, isso pode ser causado pelo particionamento excessivo da tabela. Tabelas com centenas ou milhares de partições podem resultar em um processamento de consultas mais lento. Para melhorar a performance da consulta, tente uma ou mais das seguintes opções:

  • Considere reduzir o número de partições.
  • Consulte uma partição por vez e concatene os resultados.
  • Use a projeção de partição para ajudar a acelerar o processamento de consultas de tabelas altamente particionadas e automatizar o gerenciamento de partições.

Maior tempo de processamento

Se as suas consultas tiverem um tempo maior de processamento de mecanismo, faça o seguinte para melhorar a performance da consulta:

  1. Particione suas tabelas para restringir a quantidade de dados verificados por cada consulta. As partições atuam como colunas virtuais e mantêm os dados relacionados juntos com base nos valores das colunas. O particionamento de suas tabelas pode melhorar a performance da consulta e reduzir os custos. Para obter mais informações, consulte Particionar dados.
  2. 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 no tempo se deve à sobrecarga envolvida em tarefas, como abrir o arquivo S3, listar diretórios e configurar a transferência de dados. Use o utilitário 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.
  3. Execute outras otimizações de armazenamento e consulta para melhorar a performance e reduzir os tempos de processamento do mecanismo. Para mais informações, consulte As 10 principais dicas de ajuste de performance para o Amazon Athena.

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 processa as consultas atribuindo recursos com base na carga geral do serviço e no número de solicitações recebidas. Portanto, todas as suas consultas enviadas podem não ser executadas simultaneamente.


Informações relacionadas

Ajuste da performance no Athena

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos