PostgreSQL PG14 mejora el registro a través de libpq

Actualización: 2 de julio de 2023

PostgreSQL 14 mejora el registro con libpq

La función libpq se ha mejorado en PG14 para rastrear la disponibilidad de la comunicación servidor / cliente de aplicaciones. Agrega nuevas opciones para controlar el formato de salida.

fondo

libpq es una de las bibliotecas cliente, los usuarios pueden ejecutar la función PQtrace para registrar la comunicación cliente-servidor. Esta comunicación es un tipo de información de protocolo utilizada por PG, que incluye: el identificador del tipo de mensaje, la longitud del mensaje y el contenido del mensaje de la información de intercambio.

Los desarrolladores de aplicaciones pueden utilizar este registro para determinar si la comunicación funciona como se esperaba. Utilice la siguiente declaración como ejemplo:

CREAR TABLESPACE regresa tblspacewith

UBICACIÓN '/ inicio / postgres / src / prueba / regresión / espacio de tabla de prueba'

CON (costo_ de_página(aleatorio = 3.0) ;

La aplicación que llama a PQtrace en PG13 generará los siguientes tipos de registros en el archivo especificado:

Registros generados por libpq en PG13

Cabe señalar que la salida del registro de PQtrace de la versión actual de PG no contiene una marca de tiempo, por lo que no se puede utilizar como referencia para analizar consultas lentas. Además, debido a que el identificador del mensaje, la longitud del mensaje del servidor / cliente y el contenido de salida están en una línea separada, la confiabilidad es relativamente baja y el análisis de los mensajes de protocolo es más difícil. Z y C marcados con 1 son los identificadores del mensaje de protocolo. Para comprender el significado de cada identificador, consulte la sección Formatos de mensaje del manual

Descripción general de las mejoras de funciones

En PG14, la función PQtrace se ha mejorado para que el registro de salida sea más legible e incluya una marca de tiempo. Se ha agregado una nueva función PQsetTraceFlags para controlar la salida de la marca de tiempo.

Mejorar la salida de registros

La función de seguimiento mejorada en PG14 produce una salida similar a la siguiente:

Registros generados por libpq en PG 14

1) Contiene una marca de tiempo

2) El código de la dirección del mensaje es más intuitivo: F significa front-end, B significa back-end

3) Muestra el nombre del mensaje oficial en lugar del identificador del mensaje de protocolo

4) Los mensajes de protocolo significativos se emiten en una línea

Método de recuperación de registros

Como antes, comience a registrar llamando a la función PQtrace de libpq. Si no necesita generar la marca de tiempo, puede controlarla a través de la función PQsetTraceFlags.

Influir

PQtrace genera marcas de tiempo, que pueden ayudar a los usuarios a identificar consultas lentas. Si la aplicación se ralentiza repentinamente, puede verificar la diferencia de marca de tiempo en el registro para determinar si el servidor o el cliente tardó más. Los mensajes de protocolo importantes se envían en una línea, de modo que las personas que no están familiarizadas con los registros de lipq puedan comprender fácilmente la comunicación enviada entre el servidor y el cliente. Al usar la función PQsetTraceFlags para controlar si generar la marca de tiempo, puede usar este registro para las pruebas de regresión. Al no generar una marca de tiempo, puede llenar el registro con los resultados de la ejecución de prueba esperada y compararlo fácilmente con el registro obtenido durante la ejecución de la prueba.

futuras

El registro libpq de PG14 contendrá marcas de tiempo y texto más legible. En versiones posteriores, seguiremos mejorando la usabilidad en los siguientes aspectos:

1) La función actual escribe el registro en el archivo asignado a la función PQtrace. En algunos casos, el archivo de registro se expandirá mucho, lo que afectará el funcionamiento del archivo. Para resolver este problema, esperamos proporcionar una función para especificar el tamaño máximo del archivo.

2) Espero agregar variables de entorno y parámetros de conexión para establecer la ubicación del directorio de la salida del registro y el nombre del archivo de registro para adaptarse al entorno sin modificar la aplicación.

  enlaces:

lq9p16e

nl8060bc3117e