PostgreSQL PG14 melhora o registro através da libpq

Atualização: 2 de julho de 2023

PostgreSQL 14 melhora o registro com libpq

A função libpq foi aprimorada no PG14 para rastrear a disponibilidade da comunicação servidor / cliente do aplicativo. Ele adiciona novas opções para controlar o formato de saída.

fundo

libpq é uma das bibliotecas cliente, os usuários podem executar a função PQtrace para registrar a comunicação cliente-servidor. Esta comunicação é um tipo de informação de protocolo usada pelo PG, incluindo: o identificador do tipo de mensagem, o comprimento da mensagem e o conteúdo da mensagem da informação de troca.

Os desenvolvedores de aplicativos podem usar este log para determinar se a comunicação está funcionando conforme o esperado. Use a seguinte declaração como exemplo:

CREATE TABLESPACE regressão_tblspacewith

LOCALIZAÇÃO '/ casa / postgres / src / teste / regress / testtablespace'

COM (random_page_cost = 3.0) ;

O aplicativo que chama PQtrace em PG13 produzirá os seguintes tipos de registros no arquivo especificado:

Logs gerados por libpq em PG13

Deve-se notar que a saída do log PQtrace da versão PG atual não contém um carimbo de data / hora, portanto, não pode ser usado como uma referência para analisar consultas lentas. Além disso, como o identificador da mensagem, o comprimento da mensagem do servidor / cliente e o conteúdo de saída estão em uma linha separada, a confiabilidade é relativamente baixa e a análise das mensagens de protocolo é mais difícil. Z e C marcados com 1 são os identificadores da mensagem do protocolo. Para entender o significado de cada identificador, consulte a seção Formatos de Mensagem do manual

Visão geral das melhorias de recursos

No PG14, a função PQtrace foi aprimorada para tornar o log de saída mais legível e incluir um carimbo de data / hora. Uma nova função PQsetTraceFlags foi adicionada para controlar a saída do carimbo de data / hora.

Melhorar a saída do log

A função de rastreamento aprimorada em PG14 produz uma saída semelhante à seguinte:

Logs gerados por libpq em PG 14

1) Contém um carimbo de data / hora

2) O código de direção da mensagem é mais intuitivo: F significa front end, B significa back end

3) Envie o nome da mensagem oficial em vez do identificador da mensagem do protocolo

4) Mensagens de protocolo significativas são geradas em uma linha

Método de recuperação de log

Como antes, comece o registro chamando a função PQtrace da libpq. Se você não precisa enviar o carimbo de data / hora, pode controlá-lo por meio da função PQsetTraceFlags.

Influenciar

O PQtrace gera carimbos de data / hora, que podem ajudar os usuários a identificar consultas lentas. Se o aplicativo ficar lento de repente, você pode verificar a diferença de carimbo de data / hora no log para determinar se o servidor ou cliente demorou mais. Mensagens de protocolo significativas são geradas em uma linha, para que as pessoas que não estão familiarizadas com os logs do lipq possam entender facilmente a comunicação enviada entre o servidor e o cliente. Usando a função PQsetTraceFlags para controlar se o registro de data e hora deve ser gerado, você pode usar este log para teste de regressão. Ao não emitir um carimbo de data / hora, você pode preencher o log com os resultados da execução de teste esperada e compará-lo facilmente com o log obtido durante a execução de teste.

futuro

O registro libpq do PG14 conterá carimbos de hora e texto mais legível. Nas versões subsequentes, iremos melhorar ainda mais a usabilidade nos seguintes aspectos:

1) A função atual grava o log no arquivo atribuído à função PQtrace. Em alguns casos, o arquivo de log se expandirá muito, afetando a operação do arquivo. Para resolver este problema, esperamos fornecer uma função para especificar o tamanho máximo do arquivo.

2) Espero adicionar variáveis ​​de ambiente e parâmetros de conexão para definir a localização do diretório de saída do log e o nome do arquivo de log para se adaptar ao ambiente sem modificar o aplicativo.

  Links:

lq9p16e

nl8060bc3117e