Utilisation de l'optimiseur basé sur les coûts - 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.

Utilisation de l'optimiseur basé sur les coûts

Vous pouvez utiliser la fonctionnalité d'optimisation basée sur les coûts (CBO) d'Athena SQL pour optimiser vos requêtes. Vous pouvez éventuellement demander à Athena de recueillir des statistiques au niveau des tables ou des colonnes pour l'une de vos tables dans AWS Glue. Si toutes les tables de votre requête contiennent des statistiques, Athena utilise ces statistiques pour créer un plan d'exécution qu'elle considère comme le plus performant. L'optimiseur de requêtes calcule des plans alternatifs sur la base d'un modèle statistique, puis sélectionne celui qui sera probablement le plus rapide pour exécuter la requête.

Les statistiques sur AWS Glue les tables sont collectées et stockées dans le AWS Glue Data Catalog et mises à la disposition d'Athena pour améliorer la planification et l'exécution des requêtes. Il s'agit de statistiques au niveau des colonnes, telles que le nombre de valeurs distinctes, le nombre de valeurs nulles, maximales et minimales pour des types de fichiers tels que Parquet, ORC, JSON, ION, CSV et XML. Amazon Athena utilise ces statistiques pour optimiser les requêtes en appliquant les filtres les plus restrictifs le plus tôt possible lors du traitement des requêtes. Ce filtrage limite l'utilisation de la mémoire et le nombre d'enregistrements qui doivent être lus pour fournir les résultats de la requête.

En conjonction avec le CBO, Athena utilise une fonctionnalité appelée optimiseur basé sur des règles (RBO). Le RBO applique mécaniquement des règles censées améliorer les performances des requêtes. Le RBO est généralement bénéfique, car ses transformations visent à simplifier le plan de requêtes. Cependant, étant donné que RBO n'effectue pas de calculs de coûts ni de comparaisons de plans, il lui est difficile de créer un plan optimal à partir de requêtes plus complexes.

C'est pourquoi Athena utilise à la fois le RBO et le CBO pour optimiser vos requêtes. Après avoir identifié les possibilités d'améliorer l'exécution des requêtes, Athena crée un plan optimal. Pour en savoir plus sur les détails du plan d'exécution, veuillez consulter Affichage des plans d'exécution pour les requêtes SQL. Pour une discussion détaillée du fonctionnement du CBO, consultez l'article Accélérer les requêtes avec l'optimiseur basé sur les coûts d'Amazon Athena sur le blog Big Data. AWS

Pour générer des statistiques pour les tables du AWS Glue catalogue, vous pouvez utiliser la console Athena, la AWS Glue console ou AWS Glue les API. Athena étant intégrée à AWS Glue Catalog, vous bénéficiez automatiquement des améliorations de performances correspondantes lorsque vous exécutez des requêtes depuis Amazon Athena.

Considérations et restrictions

  • Types de tables : actuellement, la fonctionnalité CBO d'Athena ne prend en charge que les tables Hive qui se trouvent dans l' AWS Glue Data Catalog.

  • Athena pour Spark : la fonctionnalité CBO n'est pas disponible dans Athena pour Spark.

  • Tarification : pour obtenir des informations sur les prix, consultez la page de tarification d'AWS Glue.

Génération de statistiques sur les tables à l'aide de la console Athena

Cette section explique comment utiliser la console Athena pour générer des statistiques au niveau des tables ou des colonnes pour une table dans AWS Glue. Pour plus d'informations sur l'utilisation AWS Glue pour générer des statistiques de table, consultez la section Utilisation des statistiques de colonnes dans le Guide du AWS Glue développeur.

Pour générer des statistiques sur les tables à l'aide de la console Athena
  1. Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/.

  2. Dans la liste des Tables de l'éditeur de requêtes Athena, choisissez les trois points verticaux pour le tableau de votre choix, puis sélectionnez Générer des statistiques.

    Menu contextuel d'une table dans l'éditeur de requêtes Athena.
  3. Dans la boîte de dialogue Générer des statistiques, choisissez Toutes les colonnes pour générer des statistiques pour toutes les colonnes de la table, ou sélectionnez Colonnes sélectionnées pour sélectionner des colonnes spécifiques. La valeur par défaut est Toutes les colonnes.

    Boîte de dialogue Générer des statistiques.
  4. Pour le rôle de AWS Glue service, créez ou sélectionnez un rôle de service existant AWS Glue pour autoriser la génération de statistiques. La fonction du service AWS Glue nécessite également des autorisations S3:GetObject d'accès au compartiment Amazon S3 qui contient les données de la table.

    Choisir un rôle AWS Glue de service.
  5. Choisissez Générer des statistiques. Une bannière de notification Génération de statistiques pour table_name affiche le statut de la tâche.

    La bannière de notification Génération de statistiques.
  6. Pour afficher les détails dans la AWS Glue console, choisissez View in Glue.

    Pour plus d'informations sur l'affichage des statistiques dans la AWS Glue console, consultez la section Affichage des statistiques des colonnes dans le Guide du AWS Glue développeur.

  7. Une fois les statistiques générées, les tables et les colonnes contenant des statistiques affichent le mot Statistiques entre parenthèses, comme dans l'image suivante.

    Une table présentant des icônes de statistiques dans l'éditeur de requêtes Athena.

Désormais, lorsque vous exécutez vos requêtes, Athena effectue une optimisation basée sur les coûts sur les tables et les colonnes pour lesquelles les statistiques ont été générées.

Ressources supplémentaires

Pour plus d'informations, consultez la ressource suivante.

Enhance query performance using AWS Glue Data Catalog statistics (AWS YouTube channel)