Otimização do uso do serviço - Amazon Athena

Otimização do uso do serviço

As considerações sobre o nível de serviço incluem o número de workloads que você executa por conta, as Service Quotas não apenas para o Athena, mas para todos os serviços, e o pensamento sobre como reduzir os erros de falta de recursos.

Executar uma workload por conta para evitar limites de cotas de serviço

O Athena impõe cotas para métricas como tempo de execução da consulta, número de consultas simultâneas na conta e taxas de solicitação de API. Para obter mais informações sobre essas cotas, consulte Service Quotas. Exceder essas cotas faz com que uma consulta falhe, seja quando ela é enviada, seja durante a execução da consulta.

Muitas das dicas de otimização de performance desta página podem ajudar a reduzir o tempo de execução das consultas. A otimização libera capacidade para que você possa executar mais consultas dentro da cota de simultaneidade e evita que as consultas sejam canceladas por estarem em execução por muito tempo.

As cotas sobre o número de consultas simultâneas e solicitações de API são por Conta da AWS e Região da AWS. É recomendável executar uma workload por Conta da AWS (ou usar reservas de capacidade provisionadas separadas) para evitar que as workloads concorram à mesma cota.

Se você executar duas workloads na mesma conta, uma das workloads poderá executar uma intermitência de consultas. Isso pode fazer com que a workload restante seja limitada ou impedida de executar consultas. Para evitar isso, é possível mover as workloads para contas separadas para dar a cada workload sua própria cota de simultaneidade. Criar uma reserva de capacidade provisionada para uma ou ambas as workloads atinge o mesmo objetivo.

Considerar as cotas em outros serviços

Ao executar uma consulta, o Athena pode chamar outros serviços que impõem cotas. Durante a execução da consulta, o Athena pode fazer chamadas de API para o AWS Glue Data Catalog, o Amazon S3 e outros serviços da AWS, como o IAM e o AWS KMS. Se você usar consultas federadas, o Athena também chamará o AWS Lambda. Todos esses serviços têm seus próprios limites e cotas que podem ser excedidos. Quando a execução de uma consulta encontra erros nesses serviços, ela falha e inclui o erro do serviço de origem. Os erros recuperáveis são repetidos, mas as consultas ainda poderão falhar se o problema não for resolvido a tempo. Leia atentamente as mensagens de erro para determinar se elas vêm do Athena ou de outro serviço. Alguns erros relevantes são abordados nesta seção de ajuste de desempenho.

Para obter mais informações sobre como resolver erros causados por cotas de serviço do Amazon S3, consulte Evite ter uma quantidade muito grande de arquivos mais adiante neste documento. Para obter mais informações sobre a otimização de performance do Amazon S3, consulte Padrões de design de práticas recomendadas: otimizar a performance do Amazon S3 no Guia do usuário do Amazon S3.

Reduzir erros de "falta de recursos"

O Athena executa consultas em um mecanismo de consulta distribuído. Quando você envia uma consulta, o planejador de consultas do mecanismo do Athena estima a capacidade computacional necessária para executar a consulta e prepara devidamente um cluster de nós de computação. Algumas consultas, como consultas DDL, são executadas em apenas um nó. Consultas complexas baseadas em grandes conjuntos de dados são executadas em clusters muito maiores. Os nós são uniformes e têm as mesmas configurações de memória, CPU e disco. O Athena aumenta a escala horizontalmente, não verticalmente, para processar consultas mais exigentes.

Às vezes, as demandas de uma consulta excedem os recursos disponíveis para o cluster que está executando a consulta. Quando isso acontece, a consulta falha com o erro Query exhausted resources at this scale factor.

O recurso que se esgota com mais frequência é a memória, mas em casos raros também pode ser o espaço em disco. Os erros de memória geralmente ocorrem quando o mecanismo executa uma função de junção ou janela, mas também podem ocorrer em contagens e agregações distintas.

Mesmo que a consulta falhe com um erro de “falta de recursos” uma vez, ela pode ter êxito ao ser executada novamente. A execução da consulta não é determinística. Fatores como o tempo necessário para carregar os dados e como os conjuntos de dados intermediários serão distribuídos pelos nós podem resultar em diferentes usos de recursos. Por exemplo, imagine uma consulta que une duas tabelas e tem uma grande distorção na distribuição dos valores da condição de junção. A consulta pode ter êxito na maioria das vezes, mas ocasionalmente falha quando os valores mais comuns acabam sendo processados pelo mesmo nó.

Para evitar que suas consultas excedam os recursos disponíveis, use as dicas de ajuste de performance mencionadas neste documento. Em particular, para obter dicas sobre como otimizar consultas que esgotam os recursos disponíveis, consulte Otimizar junções, Reduzir o escopo das funções da janela ou removê-las e Otimizar consultas com o uso de aproximações.