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.
Operar várias workloads na mesma conta
O Athena usa cotas para limitar a simultaneidade de consultas e as taxas de solicitação de API no nível da conta. Exceder essas cotas pode gerar falhas nas consultas durante a execução ou no momento do envio. Para obter mais informações sobre essas cotas, consulte Service Quotas.
Se você operar várias workloads na mesma conta da AWS, elas competirão pela mesma cota no nível da conta. Por exemplo, se uma workload sofrer uma explosão inesperada de consultas, outra workload em execução na mesma conta poderá ter um tempo de fila elevado ou, na pior das hipóteses, falhas no envio da consulta devido ao controle de utilização.
Recomendamos que você use o CloudWatch para monitorar a utilização do serviço por meio de gráficos e painéis. É possível também configurar alarmes do CloudWatch que emitam alertas quando a utilização se aproximar da cota de serviço para consultas simultâneas, permitindo que medidas sejam tomadas antes que os limites de cota sejam atingidos. Para obter mais informações, consulte Monitorar métricas de uso do Athena com o CloudWatch.
Para controlar a simultaneidade de consultas e isolar as workloads da sua conta, use reservas de capacidade. As reservas de capacidade fornecem capacidade dedicada de processamento de consultas dentro de uma única conta. A capacidade é medida em unidades de processamento de dados (DPUs) e pode ser adicionada ou removida para aumentar ou diminuir a simultaneidade de consultas, respectivamente. As reservas de capacidade permitem que você isole as workloads umas das outras dentro da conta designando capacidade a um ou mais grupos de trabalho. Para obter mais informações, consulte Gerenciar a capacidade de processamento de consulta.
Embora você deva isolar as workloads não relacionadas em contas diferentes da AWS (como isolar o ambiente de desenvolvimento do ambiente de produção), essa abordagem não oferece uma maneira escalável de aumentar a simultaneidade de consultas. Em vez disso, use reservas de capacidade para gerenciar e escalar as necessidades de processamento de consultas dentro de uma única conta.
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.