Capture de plans d'exécution Aurora PostgreSQL dans des réplicas - 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 de plans d'exécution Aurora PostgreSQL dans des réplicas

QPM (Query Plan Management) vous permet de capturer les plans de requête générés par des réplicas Aurora et de les stocker sur l'instance de base de données principale du cluster de base de données Aurora. Vous pouvez collecter les plans de requête de tous les réplicas Aurora et conserver les plans optimaux dans une table persistante centrale sur l'instance principale. Vous pouvez ensuite appliquer ces plans à d'autres réplicas si nécessaire. Cela vous permet de préserver la stabilité des plans d'exécution et d'améliorer les performances des requêtes sur l'ensemble des clusters de bases de données et des versions du moteur.

Prérequis

Activez capture_plan_baselines parameter dans le réplica Aurora : définissez le paramètre capture_plan_baselines sur automatique ou manuel pour capturer des plans dans des réplicas Aurora. Pour plus d'informations, consultez apg_plan_mgmt.capture_plan_baselines.

Installez l'extension postgres_fdw : vous devez installer l'extension de l'encapsuleur de données externes postgres_fdw pour capturer des plans dans des réplicas Aurora. Pour installer l'extension, exécutez la commande suivante dans chaque base de données.

postgres=> CREATE EXTENSION IF NOT EXISTS postgres_fdw;

Gestion de la capture de plans dans des réplicas Aurora

Activation de la capture de plans dans des réplicas Aurora

Vous devez disposer de privilèges rds_superuser pour créer ou supprimer la capture de plans dans des réplicas Aurora. Pour plus d'informations sur les rôles utilisateur et les autorisations, consultez Comprendre les rôles et les autorisations PostgreSQL.

Pour capturer des plans, appelez la fonction apg_plan_mgmt.create_replica_plan_capture dans l'instance de base de données d'enregistreur, comme indiqué ci-dessous :

postgres=> CALL apg_plan_mgmt.create_replica_plan_capture('cluster_endpoint', 'password');
  • cluster_endpoint : cluster_endpoint (point de terminaison de l'enregistreur) prend en charge le basculement pour la capture de plans dans des réplicas Aurora.

  • password : nous vous recommandons de suivre les instructions ci-dessous lors de la création du mot de passe afin de renforcer sa sécurité :

    • au moins 8 caractères ;

    • au moins une lettre majuscule, une lettre minuscule et un chiffre ;

    • au moins un caractère spécial (?, !, #, <, >, *, etc.).

Note

Si vous modifiez le point de terminaison, le mot de passe ou le numéro de port du cluster, vous devez exécuter à nouveau apg_plan_mgmt.create_replica_plan_capture() avec le point de terminaison et le mot de passe du cluster pour réinitialiser la capture de plans. Dans le cas contraire, la capture de plans dans des réplicas Aurora échouera.

Désactivation de la capture de plans dans des réplicas Aurora

Vous pouvez désactiver le paramètre capture_plan_baselines dans le réplica Aurora en définissant sa valeur sur off dans le groupe Paramètre.

Suppression de la capture de plans dans des réplicas Aurora

Vous pouvez supprimer complètement la capture de plans dans des réplicas Aurora. Pour supprimer la capture de plans, appelez apg_plan_mgmt.remove_replica_plan_capture comme indiqué :

postgres=> CALL apg_plan_mgmt.remove_replica_plan_capture();

Vous devez appeler à nouveau apg_plan_mgmt.create_replica_plan_capture() pour activer la capture de plans dans des réplicas Aurora avec le point de terminaison et le mot de passe du cluster.

Résolution des problèmes

Vous trouverez ci-dessous des suggestions de résolution des problèmes et des solutions de contournement si le plan n'est pas capturé dans des réplicas Aurora comme prévu.

  • Définition des paramètres : vérifiez si le paramètre capture_plan_baselines est défini sur la bonne valeur pour activer la capture de plans.

  • Installation de l'extension postgres_fdw : utilisez la requête suivante pour vérifier si postgres_fdw est installée.

    postgres=> SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'
  • Appel de create_replica_plan_capture () : utilisez la commande suivante pour vérifier si le mappage utilisateur existe. Sinon, appelez create_replica_plan_capture() pour initialiser la fonctionnalité.

    postgres=> SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • Point de terminaison et numéro de port du cluster : vérifiez si le point de terminaison et le numéro de port du cluster sont exacts. Aucun message d'erreur ne s'affiche si ces valeurs sont incorrectes.

    Utilisez la commande suivante pour vérifier si le point de terminaison est utilisé dans create() et dans quelle base de données il réside :

    postgres=> SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';
  • reload() : vous devez appeler apg_plan_mgmt.reload() après avoir appelé apg_plan_mgmt.delete_plan() dans les réplicas Aurora pour que la suppression soit effective. Cela permet de s'assurer que le changement a été mis en œuvre avec succès.

  • Mot de passe : vous devez saisir le mot de passe dans create_replica_plan_capture() conformément aux instructions mentionnées. Sinon, vous recevrez un message d'erreur. Pour plus d'informations, veuillez consulter Gestion de la capture de plans dans des réplicas Aurora. Utilisez un autre mot de passe conforme aux instructions.

  • Connexion interrégionales : la capture de plans dans des réplicas Aurora est également prise en charge dans la base de données globale Aurora, où l'instance d'enregistreur et les réplicas Aurora peuvent se trouver dans des régions différentes. L'instance d'enregistreur et le réplica interrégional doivent être en mesure de communiquer à l'aide d'un appairage de VPC. Pour en savoir plus, consultez Appairage de VPC. En cas de basculement vers une autre région, vous devez reconfigurer le point de terminaison du cluster de base de données principal.