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 les tables AWS Glue sont collectées et stockées dans l'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 des requêtes SQL. Pour une discussion détaillée à propos du fonctionnement de la fonctionnalité CBO, consultez Speed up queries with the cost-based optimizer in Amazon Athena
Pour générer des statistiques pour les tables du catalogue AWS Glue, vous pouvez utiliser la console Athena, la console AWS Glue ou les API AWS Glue. Athena étant intégrée au catalogue AWS Glue, 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 prend uniquement en charge les tables Hive et Iceberg qui se trouvent dans le 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 de table à 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 d'AWS Glue pour générer des statistiques de table, veuillez consulter Working with column statistics dans le Guide du développeur AWS Glue (langue française non garantie).
Pour générer des statistiques sur les tables à l'aide de la console Athena
Ouvrez la console Athena à l’adresse https://console.aws.amazon.com/athena/
. -
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.
-
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.
-
Pour la fonction du service AWS Glue, créez ou sélectionnez une fonction du service existante pour donner à AWS Glue l'autorisation de générer des statistiques. La fonction du service AWS Glue nécessite également des autorisations
S3:GetObjectd'accès au compartiment Amazon S3 qui contient les données de la table.
-
Choisissez Générer des statistiques. Une bannière de notification Génération de statistiques pour
table_nameaffiche le statut de la tâche.
-
Pour afficher les détails dans la console AWS Glue, choisissez Afficher dans Glue.
Pour plus d'informations sur l'affichage des statistiques dans la console AWS Glue, veuillez consulter Viewing column statistics dans le Guide du développeur AWS Glue (langue française non garantie).
-
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.
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.
Activation et désactivation des statistiques de table
Lorsque vous générez des statistiques de table pour une table Iceberg en suivant les étapes de la section précédente, une propriété de table Glue appelée use_iceberg_statistics est automatiquement ajoutée à la table Iceberg dans le AWS Glue Data Catalog et définie sur true par défaut. Si vous supprimez cette propriété ou si vous la définissez sur false, la fonctionnalité CBO n’utilisera pas les statistiques de table Iceberg pour tenter d’optimiser le plan de requête lors de l’exécution de la requête, même si les statistiques ont été générées par Glue. Pour plus d’informations sur la génération des statistiques de table, consultez Génération de statistiques de table à l’aide de la console Athena.
En revanche, les tables Hive du Catalogue de données Glue ne possèdent pas de propriété de table similaire permettant d’activer ou de désactiver l’utilisation des statistiques de table dans le cadre de la fonctionnalité CBO. Par conséquent, la fonctionnalité CBO utilise toujours les statistiques de table générées par Glue pour tenter d’optimiser le plan de requête pour les tables Hive.
Ressources supplémentaires
Pour plus d’informations, consultez la ressource suivante.