PostgreSQL PG14는 libpq를 통해 로깅을 개선합니다.

업데이트: 2년 2023월 XNUMX일

PostgreSQL 14는 libpq로 로깅을 개선합니다.

libpq 기능은 응용 프로그램 서버/클라이언트 통신의 가용성을 추적하기 위해 PG14에서 향상되었습니다. 출력 형식을 제어하는 ​​새로운 옵션을 추가합니다.

배경

libpq는 클라이언트 라이브러리 중 하나이며 사용자는 PQtrace 기능을 실행하여 클라이언트-서버 통신을 기록할 수 있습니다. 이 통신은 메시지 유형의 식별자, 메시지 길이 및 교환 정보의 메시지 내용을 포함하여 PG에서 사용하는 일종의 프로토콜 정보입니다.

애플리케이션 개발자는 이 로그를 사용하여 통신이 예상대로 수행되고 있는지 확인할 수 있습니다. 다음 명령문을 예로 사용하십시오.

CREATE TABLESPACE 회귀_tblspacewith

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

WITH (랜덤_페이지_비용=3.0);

PG13에서 PQtrace를 호출하는 애플리케이션은 지정된 파일에 다음 유형의 로그를 출력합니다.

PG13에서 libpq에 의해 생성된 로그

현재 PG 버전의 PQtrace 로그 출력에는 타임스탬프가 포함되어 있지 않으므로 느린 쿼리를 분석하기 위한 참조로 사용할 수 없습니다. 또한 메시지 식별자, 서버/클라이언트 메시지 길이 및 출력 내용이 별도의 줄에 있기 때문에 신뢰도가 상대적으로 낮고 프로토콜 메시지 분석이 더 어렵습니다. 1로 표시된 Z와 C는 프로토콜 메시지의 식별자입니다. 각 식별자의 의미를 이해하려면 설명서의 메시지 형식 섹션을 참조하십시오.

기능 개선 개요

PG14에서는 출력 로그를 더 읽기 쉽게 만들고 타임스탬프를 포함하도록 PQtrace 기능이 개선되었습니다. 타임스탬프의 출력을 제어하기 위해 새로운 기능 PQsetTraceFlags가 추가되었습니다.

로그 출력 개선

PG14의 개선된 추적 기능은 다음과 유사한 출력을 생성합니다.

PG 14에서 libpq에 의해 생성된 로그

1) 타임스탬프 포함

2) 메시지 방향 코드가 더 직관적입니다. F는 프런트 엔드, B는 백 엔드를 의미합니다.

3) 프로토콜 메시지의 식별자 대신 공식 메시지 이름 출력

4) 의미있는 프로토콜 메시지를 한 줄로 출력

로그 검색 방법

이전과 마찬가지로 libpq의 PQtrace 함수를 호출하여 로깅을 시작합니다. 타임스탬프를 출력할 필요가 없다면 PQsetTraceFlags 함수를 통해 제어할 수 있습니다.

영향

PQtrace는 사용자가 느린 쿼리를 식별하는 데 도움이 되는 타임스탬프를 출력합니다. 애플리케이션이 갑자기 느려지면 로그의 타임스탬프 차이를 확인하여 서버 또는 클라이언트가 더 오래 걸렸는지 여부를 확인할 수 있습니다. 중요한 프로토콜 메시지가 한 줄로 출력되어 lipq 로그에 익숙하지 않은 사람들도 서버와 클라이언트 사이에 전송되는 통신을 쉽게 이해할 수 있습니다. PQsetTraceFlags 함수를 사용하여 타임스탬프를 출력할지 여부를 제어하면 이 로그를 회귀 테스트에 사용할 수 있습니다. 타임스탬프를 출력하지 않음으로써 예상되는 테스트 실행 결과로 로그를 채우고 테스트 실행 중에 얻은 로그와 쉽게 비교할 수 있습니다.

미래

PG14의 libpq 로그에는 타임스탬프와 더 읽기 쉬운 텍스트가 포함됩니다. 후속 버전에서는 다음과 같은 측면에서 사용성을 더욱 향상시킬 것입니다.

1) 현재 함수는 PQtrace 함수에 할당된 파일에 로그를 씁니다. 경우에 따라 로그 파일이 매우 크게 확장되어 파일 작업에 영향을 줍니다. 이 문제를 해결하기 위해 파일의 최대 크기를 지정하는 기능을 제공하고자 합니다.

2) 환경변수와 연결 매개변수를 추가하여 로그 출력의 디렉터리 위치와 로그 파일 이름을 애플리케이션 수정 없이 환경에 맞게 설정할 수 있기를 바랍니다.

  모래밭:

lq9p16e

nl8060bc3117e