Capture des plans d'exécution d'Aurora PostgreSQL - Amazon Aurora

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.

Capture des plans d'exécution d'Aurora PostgreSQL

La gestion des plans de requêtes Aurora PostgreSQL propose deux modes différents pour capturer les plans d'exécution des requêtes : automatique ou manuel. Vous pouvez choisir le mode en définissant la valeur du apg_plan_mgmt.capture_plans_baselines sur automatic ou manual. Vous pouvez capturer les plans d'exécution pour des instructions SQL spécifiques à l'aide de la capture de plan manuelle. Vous pouvez aussi capturer la totalité des plans (ou les plus lents) qui sont exécutés au moins deux fois pendant l'exécution de votre application à l'aide de la capture de plan automatique.

Lors de la capture des plans, l'optimiseur définit le statut du premier plan capturé d'une instruction gérée sur approved. L'optimiseur définit le statut des autres plans capturés pour une instruction gérée sur unapproved. Cependant, il est possible parfois d'enregistrer plusieurs plans avec le statut approved. Cela peut se produire lorsque plusieurs plans sont créés pour une instruction en parallèle, et avant que le premier plan pour l'instruction ne soit validé.

Pour contrôler le nombre maximal de plans pouvant être capturés et stockés dans la vue dba_plans, définissez le paramètre apg_plan_mgmt.max_plans dans votre groupe de paramètres au niveau de l'instance de base de données. Une modification du paramètre apg_plan_mgmt.max_plans nécessite la réinitialisation de l'instance de base de données pour que la nouvelle valeur prenne effet. Pour plus d'informations, veuillez consulter le paramètre apg_plan_mgmt.max_plans.

Capture manuelle de plans pour des instructions SQL spécifiques

Si vous disposez d'un ensemble connu d'instructions SQL à gérer, placez les instructions dans un fichier script SQL, puis capturez manuellement les plans. L'exemple suivant montre une commande psql pour la capture manuelle de plans de requêtes pour un ensemble d'instructions SQL.

psql> SET apg_plan_mgmt.capture_plan_baselines = manual; psql> \i my-statements.sql psql> SET apg_plan_mgmt.capture_plan_baselines = off;

Après avoir capturé un plan pour chaque instruction SQL, l'optimiseur ajoute une nouvelle ligne à la vue apg_plan_mgmt.dba_plans.

Il est recommandé d'utiliser les instructions EXPLAIN ou EXPLAIN EXECUTE dans le fichier de script SQL. Assurez-vous d'inclure un nombre suffisant de variantes dans les valeurs des paramètres afin de capturer tous les plans intéressants.

Si vous connaissez un meilleur plan que le plan à coût minimal de l'optimiseur, vous pouvez contraindre l'optimiseur à l'utiliser. À cette fin, spécifiez un ou plusieurs indicateurs de l'optimiseur. Pour plus d'informations, consultez Correction de plans à l'aide de pg_hint_plan. Pour comparer les performances des plans unapproved et approved, et les approuver, les rejeter ou les supprimer, veuillez consulter Évaluation des performances des plans.

Capture automatique de plans

Utilisez la capture automatique des plans pour des situations telles que la suivante :

  • Vous ne connaissez pas les instructions SQL spécifiques que vous voulez gérer.

  • Vous devez gérer des centaines ou des milliers d'instructions SQL.

  • Votre application utilise une API client. Par exemple, JDBC utilise des instructions préparées sans nom ou des instructions en mode bloc qui ne peuvent pas être exprimées en psql.

Pour capturer des plans automatiquement
  1. Activez la capture automatique des plans en définissant apg_plan_mgmt.capture_plan_baselines sur automatic dans le groupe de paramètres au niveau de l'instance de base de données. Pour plus d'informations, consultez Modification de paramètres dans un groupe de paramètres de bases de données.

  2. Redémarrez votre instance de base de données.

  3. Tandis que l'application s'exécute, l'optimiseur capture des plans pour chaque instruction SQL qui s'exécute au moins deux fois.

    Tandis que l'application s'exécute avec les paramètres par défaut de gestion des plans de requêtes, l'optimiseur capture des plans pour chaque instruction SQL qui s'exécute au moins deux fois. La capture de tous les plans à l'aide des valeurs par défaut entraîne très peu de surcharge de temps d'exécution et peut être activée en production.

Pour désactiver la capture automatique des plans
  • Définissez le paramètre apg_plan_mgmt.capture_plan_baselines sur off depuis le groupe de paramètres au niveau de l'instance de base de données.

Pour mesurer les performances des plans non approuvés et les approuver, les rejeter ou les supprimer, veuillez consulter la section Évaluation des performances des plans.