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 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 AWS Glue catalogue, vous pouvez utiliser la console Athena, la AWS Glue console ou. AWS Glue APIs 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 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 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
Ouvrez la console à 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 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: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 génération de statistiques pour les
table_namenotifications affiche le statut de la tâche.
-
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.
-
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 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.