Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Optimisation de l'utilisation des services
Les considérations relatives au niveau de service incluent le nombre de charges de travail que vous exécutez par compte, les quotas de service non seulement pour Athena, mais aussi pour l'ensemble des services, et la réflexion sur la manière de réduire les erreurs liées au manque de ressources.
Rubriques
Exécutez une charge de travail par compte pour éviter les limites de quota de service
Athena applique des quotas pour des indicateurs tels que la durée d'exécution des requêtes, le nombre de requêtes simultanées dans un compte et API les taux de demandes. Pour de plus amples informations sur ces quotas, consultez Service Quotas. Le dépassement de ces quotas entraîne l'échec d'une requête, soit lors de son envoi, soit lors de son exécution.
La plupart des conseils d'optimisation des performances présentés sur cette page peuvent contribuer à réduire la durée d'exécution des requêtes. L'optimisation libère de la capacité afin que vous puissiez exécuter davantage de requêtes dans les limites du quota de simultanéité et évite que les requêtes ne soient annulées pour cause de trop longue durée.
Les quotas relatifs au nombre de requêtes et de API demandes simultanées sont calculés par Compte AWS et Région AWS. Nous recommandons d'exécuter une charge de travail par charge de travail Compte AWS (ou d'utiliser des réservations de capacité provisionnées distinctes) pour éviter que les charges de travail ne soient en concurrence pour le même quota.
Si vous exécutez deux charges de travail dans le même compte, l'une des charges de travail peut exécuter une rafale de requêtes. Cela peut entraîner une limitation de la charge de travail restante ou l'empêcher d'exécuter des requêtes. Pour éviter cela, vous pouvez déplacer les charges de travail vers des comptes distincts afin de donner à chaque charge de travail son propre quota de simultanéité. La création d'une réserve de capacité allouée pour l'une ou les deux charges de travail permet d'atteindre le même objectif.
Envisagez des quotas dans d'autres services
Lorsqu'Athena exécute une requête, il peut appeler d'autres services qui appliquent des quotas. Pendant l'exécution de la requête, Athena peut API appeler Amazon S3 et d'autres AWS services tels que IAM et. AWS Glue Data Catalog AWS KMS Si vous utilisez des requêtes fédérées, Athena appelle également. AWS Lambda Tous ces services ont leurs propres limites et quotas qui peuvent être dépassés. Lorsque l'exécution d'une requête rencontre des erreurs provenant de ces services, elle échoue et inclut l'erreur provenant du service source. Les erreurs récupérables font l'objet de nouvelles tentatives, mais les requêtes peuvent toujours échouer si le problème ne se résout pas de lui-même à temps. Assurez-vous de lire attentivement les messages d'erreur afin de déterminer s'ils proviennent d'Athena ou d'un autre service. Certaines des erreurs pertinentes sont abordées dans cette section sur le réglage des performances.
Pour plus d'informations sur la manière de contourner les erreurs causées par les Service Quotas d'Amazon S3, consultez Éviter d'avoir trop de fichiers ultérieurement dans ce document. Pour de plus amples informations sur l'optimisation des performances Amazon S3, consultez Schémas de conception des bonnes pratiques : optimisation des performances Amazon S3 dans le Guide de l'utilisateur Amazon S3.
Réduisez les erreurs liées au « manque de ressources »
Athena exécute des requêtes dans un moteur de requête distribué. Lorsque vous soumettez une requête, le planificateur de requêtes du moteur Athena estime la capacité de calcul requise pour exécuter la requête et prépare un cluster de nœuds de calcul en conséquence. Certaines requêtes, telles que DDL les requêtes, ne s'exécutent que sur un seul nœud. Les requêtes complexes portant sur des jeux de données volumineux s'exécutent sur des clusters beaucoup plus importants. Les nœuds sont uniformes, avec les mêmes configurations de CPU mémoire et de disque. Athena monte en puissance, mais n'augmente pas en capacité, pour traiter des requêtes plus exigeantes.
Parfois, les exigences d'une requête dépassent les ressources disponibles pour le cluster exécutant la requête. Dans ce cas, la requête échoue avec le message d'erreur La requête a épuisé les ressources à ce facteur d'échelle
.
La ressource la plus souvent épuisée est la mémoire, mais dans de rares cas, il peut également s'agir d'espace disque. Les erreurs de mémoire se produisent généralement lorsque le moteur exécute une fonction de jointure ou de fenêtrage, mais elles peuvent également se produire lors de comptages et d'agrégations distincts.
Même si une requête échoue une fois avec une erreur « manque de ressources », elle peut réussir lorsque vous l'exécutez à nouveau. L'exécution des requêtes n'est pas déterministe. Des facteurs tels que le temps nécessaire au chargement des données et la manière dont les jeux de données intermédiaires sont répartis sur les nœuds peuvent entraîner une utilisation différente des ressources. Par exemple, imaginez une requête qui joint deux tables et dont la distribution des valeurs pour la condition de jointure est fortement asymétrique. Une telle requête peut réussir la plupart du temps, mais échouer parfois lorsque les valeurs les plus courantes finissent par être traitées par le même nœud.
Pour éviter que vos requêtes n'excèdent les ressources disponibles, suivez les conseils de réglage des performances mentionnés dans ce document. En particulier, pour obtenir des conseils sur la manière d'optimiser les requêtes qui épuisent les ressources disponibles, consultez Optimisez les jointures, Réduisez la portée des fonctions des fenêtres ou supprimez-les et Optimisez les requêtes en utilisant des approximations.