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: