Eu executei uma consulta no Amazon Athena e ela falhou com a mensagem de erro “Query Timeout”.
Breve descrição
É possível receber erros de tempo limite de consulta ou consultas que ficam lentas quando o limite de tempo limite da consulta DML é excedido.
Resolução
Siga essas práticas recomendadas para otimizar suas consultas e evitar erros de tempo limite.
Reduza o tempo de execução da consulta a partir do Athena
A seguir estão as etapas que é possível seguir no Athena para reduzir o runtime das consultas:
- Use a projeção de partição para dividir sua tabela em partes e manter os dados relacionados juntos.
- Comprima arquivos ou divida-os, se puder. Para obter mais informações sobre os formatos de compactação suportados, consulte ](https://docs.aws.amazon.com/athena/latest/ug/compression-formats.html)Suporte à compactação do Athena[.
- Otimize o tamanho dos seus arquivos.
Aumente o runtime da consulta para o Amazon Athena
Ao importar dados do Athena para o Amazon Quick Sight SPICE, é possível receber erros de tempo limite de consulta porque a consulta DML atinge seu runtime máximo.
Para resolver esse problema:
- Verifique seu histórico de consultas do Athena para encontrar a consulta gerada pelo Quick Sight.
- Verifique por quanto tempo a consulta foi executada antes de falhar.
- Siga as etapas na seção anterior “Reduzir a quantidade de tempo para executar a consulta do Athena” e execute a consulta novamente. Se isso não resolver o problema da consulta, vá para a etapa 4.
- Se a quantidade de tempo estiver próxima da cota máxima de tempo limite da consulta DML em minutos, aumente a cota de serviço.
Para obter mais informações sobre cotas de serviço e solicitar um aumento de cota, consulte Service Quotas.
Configurar notificações para um tempo limite de consulta do Athena
Para receber uma notificação sobre consultas que atingem o tempo limite e falhem, use uma regra de evento do Amazon CloudWatch para capturar o evento. Em seguida, use o Amazon Simple Notification Service (Amazon SNS) para configurar as notificações.
Para obter instruções, consulte Como faço para gerar notificações para um tempo limite de consulta do Athena?
Consultas de logs de acesso do Amazon S3
Se você executar consultas para os logs de acesso do Amazon Simple Storage Service (Amazon S3) e a consulta atingir o tempo limite, você poderá particionar os dados do S3. Use uma tarefa de ETL do AWS Glue para particionar seus dados do Amazon S3. Em seguida, execute as consultas do Athena em partições limitadas.
Para obter instruções, consulte How do I use a partitioned Amazon S3 access log to prevent an Athena query timeout? (Como uso um log de acesso particionado do Amazon S3 para evitar o tempo limite de uma consulta do Athena?)
Consultas de dados do CloudTrail
Se você usa o Athena para consultar dados do AWS CloudTrail, as consultas podem levar muito tempo para serem executadas ou expirar. Isso ocorre porque os logs do CloudTrail podem aumentar de tamanho com o tempo, mesmo se você particionar a tabela do CloudTrail para reduzir o runtime das consultas.
Use a projeção de partição para criar manualmente uma tabela do CloudTrail. Isso permite que o Athena calcule dinamicamente o valor das tabelas do CloudTrail, o que reduz o runtime da consulta. Com a projeção de partições, você não precisa gerenciar partições, pois os valores e as localizações das partições são calculados a partir da configuração.
Para obter instruções, consulte Como posso usar a projeção de partição para criar tabelas do CloudTrail para consultas do Athena?
Use consultas CTAS
Uma consulta CREATE TABLE AS SELECT (CTAS) cria uma nova tabela no Athena a partir dos resultados de uma declaração SELECT de outra consulta. O CTAS cria tabelas a partir dos resultados da consulta em uma única etapa, o que facilita o trabalho com conjuntos de dados brutos. As consultas CTAS também melhoram o desempenho da consulta e reduzem os custos da consulta.
Para ver exemplos, consulte Exemplos de consultas CTAS.
Para obter mais informações, consulte Como posso definir o número ou o tamanho dos arquivos ao executar uma consulta CTAS no Athena?
Use as declarações EXPLAIN e EXPLAIN ANALYZE
Use EXPLAIN e EXPLAIN ANALYZE no Athena para consultas complexas. A declaração EXPLAIN pode otimizar consultas refinando instruções SQL e verificando a remoção de partições.
Certifique-se de revisar as considerações e limitações das declarações EXPLAIN e EXPLAIN ANALYZE.
Para obter mais informações, consulte exemplos de declarações EXPLAIN.
Informações relacionadas
As 10 principais dicas de ajuste de desempenho para o Amazon Athena
How do I use the results of an Amazon Athena query in another query? (Como uso os resultados de uma consulta do Amazon Athena em outra consulta?)