이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : F.3. 토토 결과 - 느린 쿼리의 로그 실행 계획버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.2. 토토 꽁 머니

토토 꽁 머니모듈은 다음을 제공합니다. 느린 명령문의 실행 계획을 기록하는 수단 실행할 필요 없이 자동으로설명손으로. 이는 특히 최적화되지 않은 쿼리를 대규모로 추적하는 데 도움이 됩니다. 응용 프로그램.

모듈은 SQL 액세스 기능을 제공하지 않습니다. 그것을 사용하려면, 간단히 서버에 로드하면 됩니다. 에 로드할 수 있습니다. 개별 세션:

LOAD '토토 꽁 머니';

(그렇게 하려면 수퍼유저여야 합니다.) 보다 일반적인 사용법은 다음과 같습니다. 포함하여 모든 세션에 미리 로드합니다.토토 꽁 머니inshared_preload_librariesin토토 꽁 머니.conf. 그러면 추적할 수 있습니다 언제 발생하든 쿼리가 예기치 않게 느려집니다. 물론이다 이에 대한 오버헤드 비용이 있습니다.

F.2.1. 구성 매개변수

다음을 제어하는 여러 구성 매개변수가 있습니다. 의 행동토토 꽁 머니. 참고하세요 기본 동작은 아무것도 하지 않는 것이므로 최소한 설정해야 합니다.토토 꽁 머니.log_min_duration당신이 결과를 원해요.

토토 꽁 머니.log_min_duration (정수)

토토 꽁 머니.log_min_duration은 최소 명령문 실행 시간(밀리초)입니다. 그러면 문의 계획이 기록됩니다. 이를 0으로 설정하면 모든 계획이 기록됩니다. 마이너스원( 기본값)은 계획 로깅을 비활성화합니다. 예를 들어, 만약 당신이 으로 설정하세요250ms그러면 모두 250ms 이상 실행되는 명령문은 기록됩니다. 만 슈퍼유저는 이 설정을 변경할 수 있습니다.

토토 꽁 머니.log_analyze (부울)

토토 꽁 머니.log_analyze원인분석 설명출력, 그냥이 아니라설명출력, 실행 계획이 기록될 때 인쇄됩니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 변경할 수 있습니다. 이 설정입니다.

참고:이 매개변수가 켜져 있으면, 모든 문에 대해 계획 노드별 타이밍이 발생합니다. 실행될 만큼 오래 실행되는지 여부에 관계없이 실행됩니다. 실제로 기록됩니다. 이는 매우 큰 영향을 미칠 수 있습니다. 성능에 부정적인 영향을 미칩니다.

토토 꽁 머니.log_verbose (부울)

토토 꽁 머니.log_verbose원인자세한 설명출력, 그냥이 아니라설명출력, 실행 계획이 기록될 때 인쇄됩니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 변경할 수 있습니다. 이 설정입니다.

토토 꽁 머니.log_buffers (부울)

토토 꽁 머니.log_buffers원인설명(분석, 버퍼)단지 출력이 아닌 출력설명출력, 다음 경우에 인쇄됩니다. 실행 계획이 기록됩니다. 이 매개변수는 다음에 의해 꺼집니다. 기본값. 슈퍼유저만 이 설정을 변경할 수 있습니다. 이 매개변수는 다음을 제외하고는 효과가 없습니다.토토 꽁 머니.log_analyze매개변수는 설정합니다.

토토 꽁 머니.log_format (열거형)

토토 꽁 머니.log_format선택설명출력 사용할 형식입니다. 허용되는 값은 다음과 같습니다.텍스트, xml, jsonyaml. 기본값은 텍스트입니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.

토토 꽁 머니.log_nested_statements (부울)

토토 꽁 머니.log_nested_statements원인 중첩된 명령문(함수 내에서 실행되는 명령문) 로깅을 고려합니다. 꺼져 있을 때만 최상위 쿼리 계획이 기록됩니다. 이 매개변수는 꺼져 있습니다. 기본적으로. 슈퍼유저만 이 설정을 변경할 수 있습니다.

이러한 매개변수를 설정하려면토토 꽁 머니.conf파일, 추가해야 합니다토토 꽁 머니custom_variable_classes. 일반적인 사용법은 다음과 같습니다:

# 토토 꽁 머니.conf
shared_preload_libraries = '토토 꽁 머니'

custom_variable_classes = '토토 꽁 머니'
토토 꽁 머니.log_min_duration = '3초'

F.2.2. 예시

postgres=# LOAD '토토 꽁 머니';
postgres=# SET 토토 꽁 머니.log_min_duration = 0;
postgres=# 선택 개수(*)
           pg_class, pg_index에서
           여기서 oid = indrelid AND indisunique;

이렇게 하면 다음과 같은 로그 출력이 생성될 수 있습니다.

로그: 기간: 3.651ms 계획:
  쿼리 텍스트: SELECT 개수(*)
              pg_class, pg_index에서
              WHERE oid = indrelid AND indisunique;
  집계(비용=16.79..16.80행=1너비=0)(실제 시간=3.626..3.627행=1루프=1)
    - 해시 조인(비용=4.17..16.55행=92너비=0)(실제 시간=3.349..3.594행=92루프=1)
          해시 조건: (pg_class.oid = pg_index.indrelid)
          - pg_class의 시퀀스 스캔(비용=0.00..9.55행=255너비=4)(실제 시간=0.016..0.140행=255루프=1)
          - 해시(비용=3.02..3.02행=92너비=4)(실제 시간=3.238..3.238행=92루프=1)
                버킷: 1024 배치: 1 메모리 사용량: 4kB
                - pg_index의 Seq 스캔(비용=0.00..3.02행=92너비=4)(실제 시간=0.008..3.187행=92루프=1)
                      필터: indisunique