PostgreSQL PG14 verbetert het loggen via libpq

Update: 2 juli 2023

PostgreSQL 14 verbetert loggen met libpq

De libpq-functie is verbeterd in PG14 om de beschikbaarheid van applicatieserver/client-communicatie bij te houden. Het voegt nieuwe opties toe om het uitvoerformaat te regelen.

achtergrond

libpq is een van de clientbibliotheken, gebruikers kunnen de PQtrace-functie uitvoeren om de client-servercommunicatie vast te leggen. Deze communicatie is een soort protocolinformatie die door PG wordt gebruikt, waaronder: de identificatie van het berichttype, de lengte van het bericht en de berichtinhoud van de uitwisselingsinformatie.

Applicatieontwikkelaars kunnen dit logboek gebruiken om te bepalen of de communicatie presteert zoals verwacht. Gebruik de volgende uitspraak als voorbeeld:

CREATE TABLESPACE regressie_tblspacewith

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

MET (willekeurige_pagina_kosten = 3.0);

De applicatie die PQtrace in PG13 aanroept, zal de volgende soorten logs uitvoeren naar het gespecificeerde bestand:

Logboeken gegenereerd door libpq in PG13

Opgemerkt moet worden dat de PQtrace-loguitvoer van de huidige PG-versie geen tijdstempel bevat en dus niet kan worden gebruikt als referentie om langzame query's te analyseren. Omdat de berichtidentificatie, de lengte van het bericht van de server/client en de uitvoerinhoud op een aparte regel staan, is bovendien de betrouwbaarheid relatief laag en is de analyse van protocolberichten moeilijker. Z- en C-markering 1 zijn de identifiers van het protocolbericht. Om de betekenis van elke identifier te begrijpen, raadpleegt u het gedeelte Berichtindelingen van de handleiding

Overzicht van functieverbeteringen

In PG14 is de PQtrace-functie verbeterd om het uitvoerlogboek leesbaarder te maken en een tijdstempel toe te voegen. Er is een nieuwe functie PQsetTraceFlags toegevoegd om de uitvoer van de tijdstempel te regelen.

Verbeter de logboekuitvoer

De verbeterde traceerfunctie in PG14 produceert uitvoer die lijkt op het volgende:

Logboeken gegenereerd door libpq in PG 14

1) Bevat een tijdstempel

2) De code van de berichtrichting is intuïtiever: F betekent front-end, B betekent back-end

3) Voer de officiële berichtnaam uit in plaats van de identificatie van het protocolbericht

4) Betekenisvolle protocolberichten worden op één regel uitgevoerd

Methode voor het ophalen van logboeken

Begin zoals eerder met loggen door de PQtrace-functie van libpq aan te roepen. Als u de tijdstempel niet hoeft uit te voeren, kunt u deze regelen via de functie PQsetTraceFlags.

Beïnvloeden

PQtrace voert tijdstempels uit, die gebruikers kunnen helpen bij het identificeren van langzame zoekopdrachten. Als de applicatie plotseling trager wordt, kunt u het tijdstempelverschil in het logboek controleren om te bepalen of de server of client er langer over deed. Significante protocolberichten worden op één regel uitgevoerd, zodat mensen die niet bekend zijn met lipq-logboeken de communicatie tussen de server en de client gemakkelijk kunnen begrijpen. Door de functie PQsetTraceFlags te gebruiken om te bepalen of de tijdstempel moet worden uitgevoerd, kunt u dit logboek gebruiken voor regressietesten. Door geen tijdstempel uit te voeren, kunt u het logboek vullen met de resultaten van de verwachte testrun en deze eenvoudig vergelijken met de log die tijdens de testrun is verkregen.

toekomst

Het libpq-logboek van PG14 zal tijdstempels en beter leesbare tekst bevatten. In volgende versies zullen we de bruikbaarheid verder verbeteren op de volgende punten:

1) De huidige functie schrijft het logboek naar het bestand dat is toegewezen aan de functie PQtrace. In sommige gevallen zal het logbestand zeer sterk worden uitgebreid, waardoor de werking van het bestand wordt beïnvloed. Om dit probleem op te lossen, hopen we een functie te bieden om de maximale grootte van het bestand te specificeren.

2) Ik hoop omgevingsvariabelen en verbindingsparameters toe te voegen om de directorylocatie van de loguitvoer en de naam van het logbestand in te stellen om zich aan te passen aan de omgeving zonder de toepassing te wijzigen.

  Links:

lq9p16e

nl8060bc3117e