PostgreSQL PG14 migliora la registrazione tramite libpq

Aggiornamento: 2 luglio 2023

PostgreSQL 14 migliora la registrazione con libpq

La funzione libpq è stata migliorata in PG14 per tenere traccia della disponibilità della comunicazione server/client dell'applicazione. Aggiunge nuove opzioni per controllare il formato di output.

sfondo

libpq è una delle librerie client, gli utenti possono eseguire la funzione PQtrace per registrare la comunicazione client-server. Questa comunicazione è un tipo di informazioni di protocollo utilizzate da PG, tra cui: l'identificatore del tipo di messaggio, la lunghezza del messaggio e il contenuto del messaggio delle informazioni di scambio.

Gli sviluppatori di applicazioni possono utilizzare questo registro per determinare se la comunicazione funziona come previsto. Usa la seguente affermazione come esempio:

CREATE TABLESPACE regresso_tblspacewith

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

CON pagina_casuale_costo = 3.0);

L'applicazione che chiama PQtrace in PG13 genererà i seguenti tipi di log nel file specificato:

Log generati da libpq in PG13

Va notato che l'output del registro PQtrace della versione corrente di PG non contiene un timestamp, quindi non può essere utilizzato come riferimento per analizzare le query lente. Inoltre, poiché l'identificatore del messaggio, la lunghezza del messaggio server/client e il contenuto di output si trovano su una riga separata, l'affidabilità è relativamente bassa e l'analisi dei messaggi di protocollo è più difficile. Z e C contrassegnati con 1 sono gli identificatori del messaggio di protocollo. Per comprendere il significato di ciascun identificatore, fare riferimento alla sezione Formati dei messaggi del manuale

Panoramica dei miglioramenti delle funzionalità

In PG14, la funzione PQtrace è stata migliorata per rendere più leggibile il registro di output e includere un timestamp. È stata aggiunta una nuova funzione PQsetTraceFlags per controllare l'output del timestamp.

Migliora l'output del registro

La funzione di traccia migliorata in PG14 produce un output simile al seguente:

Log generati da libpq in PG 14

1) Contiene un timestamp

2) Il codice della direzione del messaggio è più intuitivo: F significa front end, B significa back end

3) Emetti il ​​nome del messaggio ufficiale invece dell'identificatore del messaggio di protocollo

4) I messaggi di protocollo significativi vengono emessi in una riga

Metodo di recupero del registro

Come prima, avvia la registrazione chiamando la funzione PQtrace di libpq. Se non è necessario emettere il timestamp, è possibile controllarlo tramite la funzione PQsetTraceFlags.

Influenzare

PQtrace emette timestamp, che possono aiutare gli utenti a identificare le query lente. Se l'applicazione rallenta improvvisamente, è possibile controllare la differenza di timestamp nel registro per determinare se il server o il client ha impiegato più tempo. I messaggi di protocollo significativi vengono emessi in una riga, in modo che le persone che non hanno familiarità con i registri lipq possano facilmente comprendere la comunicazione inviata tra il server e il client. Utilizzando la funzione PQsetTraceFlags per controllare se emettere il timestamp, è possibile utilizzare questo registro per i test di regressione. Non emettendo un timestamp, è possibile riempire il registro con i risultati dell'esecuzione del test prevista e confrontarlo facilmente con il registro ottenuto durante l'esecuzione del test.

futuro

Il registro libpq di PG14 conterrà timestamp e testo più leggibile. Nelle versioni successive, miglioreremo ulteriormente l'usabilità nei seguenti aspetti:

1) La funzione corrente scrive il log nel file assegnato alla funzione PQtrace. In alcuni casi, il file di registro si espanderà notevolmente, influenzando così il funzionamento del file. Per risolvere questo problema, speriamo di fornire una funzione per specificare la dimensione massima del file.

2) Spero di aggiungere variabili di ambiente e parametri di connessione per impostare la posizione della directory dell'output del registro e il nome del file di registro per adattarsi all'ambiente senza modificare l'applicazione.

  Collegamento:

lq9p16e

nl8060bc3117e