Optimisation de l'utilisation des services - Amazon Athena

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.

Gérez plusieurs charges de travail au sein d'un même compte

Athena utilise des quotas pour limiter la simultanéité des requêtes et les taux de demandes d'API au niveau du compte. Le dépassement de ces quotas peut entraîner l'échec des requêtes lors de l'exécution ou de la soumission. Pour de plus amples informations sur ces quotas, consultez Service Quotas.

Si vous gérez plusieurs charges de travail au sein d'un même AWS compte, elles se disputent le même quota au niveau du compte. Par exemple, si une charge de travail fait l'objet d'une rafale inattendue de requêtes, il est possible que la soumission des requêtes soit ralentie ou que les temps d'attente soient élevés.

Nous vous recommandons de suivre l'utilisation CloudWatch de vos services à l'aide de graphiques et de tableaux de bord. Vous pouvez également configurer des CloudWatch alarmes qui vous alertent lorsque votre utilisation approche le quota de service pour les requêtes simultanées, ce qui vous permet de prendre des mesures avant d'atteindre les limites de quota. Pour de plus amples informations, veuillez consulter Surveillez les statistiques d'utilisation d'Athena avec CloudWatch.

Pour contrôler la simultanéité des requêtes et isoler les charges de travail au sein de votre compte, utilisez les réservations de capacité. Les réservations de capacité fournissent une capacité de traitement des requêtes dédiée au sein d'un seul compte. La capacité est mesurée en unités de traitement des données (DPUs) et peut être ajoutée ou supprimée pour augmenter ou diminuer la simultanéité des requêtes, respectivement. Les réservations de capacité vous permettent d'isoler les charges de travail de votre compte les unes des autres en attribuant des capacités à un ou plusieurs groupes de travail. Pour de plus amples informations, veuillez consulter Gérer la capacité de traitement des requêtes.

Bien que la séparation des charges de travail entre différents AWS comptes puisse être utile à des fins organisationnelles (par exemple pour isoler le développement des environnements de production), cette approche ne constitue pas un moyen évolutif d'augmenter la simultanéité des requêtes. Utilisez plutôt les réservations de capacité pour gérer et adapter vos besoins en matière de traitement des requêtes au sein d'un seul compte.

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 des requêtes, Athena peut effectuer des appels d'API vers 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 de 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 les requêtes DDL, 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 mémoire, d'UC 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.