PostgreSQL PG14 améliore la journalisation via libpq

Mise à jour : 2 juillet 2023

PostgreSQL 14 améliore la journalisation avec libpq

La fonction libpq a été améliorée dans PG14 pour suivre la disponibilité de la communication serveur d'application/client. Il ajoute de nouvelles options pour contrôler le format de sortie.

fond

libpq est l'une des bibliothèques clientes, les utilisateurs peuvent exécuter la fonction PQtrace pour enregistrer la communication client-serveur. Cette communication est une sorte d'information de protocole utilisée par PG, comprenant : l'identifiant du type de message, la longueur du message, et le contenu du message des informations d'échange.

Les développeurs d'applications peuvent utiliser ce journal pour déterminer si la communication fonctionne comme prévu. Utilisez l'instruction suivante comme exemple :

CREATE TABLESPACE régression_tblspacewith

EMPLACEMENT '/home/postgres/src/test/regress/testtablespace'

AVEC coût_depage_aléatoire 3.0);

L'application qui appelle PQtrace dans PG13 affichera les types de journaux suivants dans le fichier spécifié :

Logs générés par libpq dans PG13

Il convient de noter que la sortie du journal PQtrace de la version actuelle du PG ne contient pas d'horodatage, elle ne peut donc pas être utilisée comme référence pour analyser les requêtes lentes. De plus, comme l'identifiant du message, la longueur du message serveur/client et le contenu de sortie se trouvent sur une ligne distincte, la fiabilité est relativement faible et l'analyse des messages de protocole est plus difficile. Z et C marqués 1 sont les identifiants du message de protocole. Pour comprendre la signification de chaque identifiant, reportez-vous à la section Formats des messages du manuel

Présentation des améliorations de fonctionnalités

Dans PG14, la fonction PQtrace a été améliorée pour rendre le journal de sortie plus lisible et inclure un horodatage. Une nouvelle fonction PQsetTraceFlags a été ajoutée pour contrôler la sortie de l'horodatage.

Améliorer la sortie du journal

La fonction de trace améliorée dans PG14 produit une sortie similaire à la suivante :

Logs générés par libpq dans PG 14

1) Contient un horodatage

2) Le code du sens du message est plus intuitif : F signifie front end, B signifie back end

3) Sortir le nom du message officiel au lieu de l'identifiant du message de protocole

4) Les messages de protocole significatifs sont affichés sur une seule ligne

Méthode de récupération du journal

Comme précédemment, commencez la journalisation en appelant la fonction PQtrace de libpq. Si vous n'avez pas besoin de sortir l'horodatage, vous pouvez le contrôler via la fonction PQsetTraceFlags.

Influencer

PQtrace génère des horodatages, ce qui peut aider les utilisateurs à identifier les requêtes lentes. Si l'application ralentit soudainement, vous pouvez vérifier la différence d'horodatage dans le journal pour déterminer si le serveur ou le client a pris plus de temps. Les messages de protocole significatifs sont affichés sur une seule ligne, de sorte que les personnes qui ne sont pas familiarisées avec les journaux lipq puissent facilement comprendre la communication envoyée entre le serveur et le client. En utilisant la fonction PQsetTraceFlags pour contrôler s'il faut sortir l'horodatage, vous pouvez utiliser ce journal pour les tests de régression. En ne produisant pas d'horodatage, vous pouvez remplir le journal avec les résultats du test attendu et le comparer facilement avec le journal obtenu pendant le test.

avenir

Le journal libpq de PG14 contiendra des horodatages et un texte plus lisible. Dans les versions ultérieures, nous améliorerons encore la convivialité dans les aspects suivants :

1) La fonction courante écrit le journal dans le fichier affecté à la fonction PQtrace. Dans certains cas, le fichier journal se développera considérablement, affectant ainsi le fonctionnement du fichier. Pour résoudre ce problème, nous espérons fournir une fonction permettant de spécifier la taille maximale du fichier.

2) J'espère ajouter des variables d'environnement et des paramètres de connexion pour définir l'emplacement du répertoire de la sortie du journal et le nom du fichier journal pour s'adapter à l'environnement sans modifier l'application.

  Liens:

lq9p16e

nl8060bc3117e