Utilisation de paramètres de journalisation pour capturer des variables de liaison - AWS Directives prescriptives

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 paramètres de journalisation pour capturer des variables de liaison

Un cas d'utilisation typique pour capturer des variables de liaison dans PostgreSQL consiste à déboguer et à optimiser les performances des requêtes SQL. Une variable de liaison vous permet de transmettre des données à une requête lorsque vous l'exécutez. En capturant les variables de liaison, vous pouvez voir les données d'entrée qui ont été transmises à une requête, ce qui peut vous aider à identifier tout problème lié aux données ou aux performances de la requête. La capture des variables de liaison peut également vous aider à auditer les données d'entrée et à détecter les risques de sécurité potentiels ou les activités malveillantes.

Il existe plusieurs méthodes pour capturer des variables de liaison pour PostgreSQL. L'une des méthodes consiste à activer les debug_print_rewritten paramètres debug_print_parse et. Cela oblige PostgreSQL à envoyer les versions analysées et réécrites des instructions SQL, ainsi que les variables liées, au journal du serveur.

  • debug_print_parse: Lorsque vous activez ce paramètre, l'arbre d'analyse des requêtes entrantes est imprimé dans le journal du serveur. Cela peut être utile pour comprendre la structure d'une requête et les valeurs de tous les paramètres liés.

  • debug_print_rewritten: Lorsque vous activez ce paramètre, les formulaires réécrits des requêtes entrantes sont imprimés dans le journal du serveur. Cela peut être utile pour comprendre comment le planificateur de requêtes interprète une requête et les valeurs de tous les paramètres liés.

Vous pouvez utiliser deux paramètres supplémentaires dans Amazon RDS et Aurora pour capturer les variables de liaison dans vos bases de données PostgreSQL :

  • log_min_duration_statement: Ce paramètre définit la durée minimale d'une instruction avant qu'elle ne soit enregistrée, en millisecondes. Lorsqu'une instruction prend plus de temps que la durée spécifiée, ses valeurs de liaison sont incluses dans la sortie du journal.

  • log_statement: Ce paramètre contrôle les instructions SQL qui sont enregistrées. Définissez ce paramètre sur all ou liez pour inclure les valeurs liées dans le journal. L'augmentation du niveau de journalisation affecte les performances. Nous vous recommandons donc d'annuler les modifications après le dépannage.

Vous pouvez également utiliser l'pg_stat_statementsextension, qui fournit des statistiques de performance pour toutes les instructions SQL exécutées par un serveur, y compris le texte de la requête et les valeurs liées. Cette extension vous permet d'utiliser pgAdmin ou des outils similaires pour surveiller et analyser les performances des requêtes.

Une autre option consiste à utiliser la pg_bind_parameter_status() fonction pour obtenir les valeurs des paramètres liés à partir d'une instruction préparée ou à utiliser la pg_get_parameter_status (paramname) fonction pour récupérer le statut ou la valeur d'un paramètre d'exécution spécifique.

En outre, vous pouvez utiliser des outils tiers tels que pgBadger pour analyser les journaux PostgreSQL et extraire les variables de liaison ainsi que d'autres informations pour une analyse plus approfondie.