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.
Comprendre la gestion des plans de requêtes Aurora PostgreSQL
Lorsque la gestion des plans de requêtes est activée pour votre cluster de bases de données Aurora PostgreSQL, l'optimiseur génère et stocke des plans d'exécution des requêtes pour toutes les instructions SQL qu'il traite plusieurs fois. L'optimiseur définit toujours le statut du premier plan généré d'une instruction gérée sur Approved
et le stocke dans la vue dba_plans
.
L'ensemble de plans approuvés enregistrés pour une instruction gérée est connu comme sa référence de plans. Tandis que votre application s'exécute, il est possible que l'optimiseur génère d'autres plans pour les instructions gérées. L'optimiseur attribue le statut aux plans capturés supplémentaire Unapproved
.
Par la suite, vous pouvez décider que les plans Unapproved
affichent de bonnes performances et les remplacer par Approved
, Rejected
ou Preferred
. Pour ce faire, vous devez utiliser la fonction apg_plan_mgmt.evolve_plan_baselines
ou la fonction apg_plan_mgmt.set_plan_status
.
Lorsque l'optimiseur génère un plan pour une instruction SQL, la gestion des plans de requêtes enregistre le plan dans la table apg_plan_mgmt.plans
. Les utilisateurs de base de données auxquels le rôle apg_plan_mgmt
a été attribué peuvent voir les détails du plan en interrogeant la vue apg_plan_mgmt.dba_plans
. Par exemple, la requête suivante répertorie les détails des plans actuellement affichés pour un cluster de bases de données Aurora PostgreSQL hors production.
sql_hash
– Identifiant de l'instruction SQL qui est la valeur de hachage du texte normalisé de l'instruction SQL.plan_hash
– Identifiant unique pour le plan qui est une combinaison desql_hash
et d'un hachage du plan.status
– Statut du plan. L'optimiseur peut exécuter un plan approuvé.enabled
– Indique si le plan est prêt à être utilisé (true) ou non (false).plan_outline
– Représentation du plan utilisé pour recréer le plan d'exécution réel. Les opérateurs de la structure arborescente correspondent aux opérateurs de la sortie EXPLAIN.
La vue apg_plan_mgmt.dba_plans
comporte de nombreuses autres colonnes qui contiennent tous les détails du plan, tels que la date à laquelle le plan a été utilisé pour la dernière fois. Consultez Référence pour la vue apg_plan_mgmt.dba_plans pour plus de détails.
Normalisation et hachage SQL
Dans la vue apg_plan_mgmt.dba_plans
, vous pouvez identifier une instruction gérée avec une valeur de hachage SQL. Le hachage SQL est calculé sur la base d'une représentation normalisée de l'instruction SQL qui élimine certaines différences, comme les valeurs littérales.
Le processus de normalisation de chaque instruction SQL préserve l'espace et la casse, afin que vous puissiez toujours lire et comprendre l'essentiel de l'instruction SQL. La normalisation supprime ou remplace les éléments suivants.
Principaux blocs de commentaires
Le mot-clé EXPLAIN et les options EXPLAIN, et EXPLAIN ANALYZE
Espaces de fin
Tous les littéraux
Prenons par exemple l'instruction suivante.
/*Leading comment*/ EXPLAIN SELECT /* Query 1 */ * FROM t WHERE x > 7 AND y = 1;
L'optimiseur normalise cette instruction comme suit.
SELECT /* Query 1 */ * FROM t WHERE x > CONST AND y = CONST;
La normalisation permet d'utiliser le même hachage SQL pour des instructions SQL similaires qui peuvent différer uniquement au niveau de leurs valeurs littérales ou de paramètres. En d'autres termes, plusieurs plans pour le même hachage SQL peuvent exister, avec un plan différent optimal dans différentes conditions.
Note
Une instruction SQL unique utilisée avec différents schémas possède des plans différents, car elle est liée au schéma spécifique au moment de l'exécution. Le planificateur utilise les statistiques pour la liaison du schéma afin de choisir le plan optimal.
Pour en savoir plus sur la façon dont l'optimiseur choisit un plan, consultez Utilisation des plans gérés Aurora PostgreSQL. Dans cette section, vous pouvez apprendre à utiliser EXPLAIN
et EXPLAIN ANALYZE
pour prévisualiser un plan avant qu'il ne soit réellement utilisé. Pour plus d'informations, consultez Analyse du plan choisi par l'optimiseur. Pour une image décrivant le processus de sélection d'un plan, consultez Sélection du plan à exécuter par l'optimiseur..