이 문서는 지원되지 않는 버전의 사설 토토 사이트 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : F.3. 토토 결과 - 느린 쿼리의 로그 실행 계획버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.3. auto_explain

theauto_explain모듈 제공 a 느린 명령문의 실행 계획을 자동으로 로깅하는 수단 달리기없이PostgreSQL : 문서 : 9.3 : 와이즈 토토by 손. 이것은 최적화되지 않은 추적에 특히 도움이됩니다 대규모 응용 프로그램의 쿼리.

모듈은 SQL 액세스 가능 함수를 제공하지 않습니다. 그것을 사용하려면 서버에 간단히로드하십시오. 당신은 그것을 개인에로드 할 수 있습니다 세션:

로드 'auto_explain';

(이를 위해서는 슈퍼 유저가되어야합니다.) 더 일반적인 사용법은 다음과 같습니다. 를 포함하여 모든 세션에 예압auto_explaininshared_preload_librariesin사설 토토 사이트.conf. 그런 다음 추적 할 수 있습니다 언제 발생하든 예기치 않게 쿼리가 느려집니다. 물론 그에 대한 오버 헤드 가격이 있습니다.

F.3.1. 구성 매개 변수

제어하는 ​​몇 가지 구성 매개 변수가 있습니다 행동auto_explain. 주목하십시오 기본 동작은 아무것도하지 않는 것이므로 최소한 설정해야합니다auto_explain.log_min_duration원한다면 모든 결과.

auto_explain.log_min_duration(정수)

auto_explain.log_min_duration입니다 최소 명령문 실행 시간 (밀리 초)이 발생합니다 성명서의 기록이 기록 될 계획입니다. 이것을 0 로그로 설정합니다 계획. 마이너스 (기본값)는 계획의 로깅을 비활성화합니다. 을 위한 예를 들어,로 설정하면250ms그런 다음 모두 250ms 이상 실행되는 명령문은 기록됩니다. 슈퍼업자 만 이 설정을 변경할 수 있습니다.

auto_explain.log_analyze(부울)

auto_explain.log_analyze원인분석단지 출력이 아니라 출력설명출력 실행 계획이 기록됩니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 오직 슈퍼업자는이 설정을 변경할 수 있습니다.

참고 :이 매개 변수가 켜져 있으면 플랜 별 노드 타이밍 실행 된 모든 진술에 대해 발생합니다. 실제로 기록되기에 충분합니다. 이것은 매우 부정적 일 수 있습니다 성능에 미치는 영향. 끄기auto_explain.log_timing성능을 개선합니다 비용이 적은 정보를 얻는 대가로 비용.

auto_explain.log_buffers(부울)

auto_explain.log_buffers컨트롤 버퍼 사용 통계가 실행 계획에 인쇄되는지 여부 기록됩니다. 에 해당합니다.버퍼옵션설명. 이 매개 변수에는 없음 이 아닌 한 효과auto_explain.log_analyzeis 활성화. 이 매개 변수는 기본적으로 꺼져 있습니다. 슈퍼 사용자 만 할 수 있습니다 이 설정을 변경하십시오.

auto_explain.log_timing(부울)

auto_explain.log_timing컨트롤 노드 당 타이밍 정보가 실행될 때 인쇄되는지 여부 계획이 기록됩니다. 에 해당합니다.타이밍옵션설명. 시스템 시계를 반복적으로 읽는 오버 헤드는 속도가 느려질 수 있습니다. 일부 시스템에서 크게 쿼리하므로 설정하는 것이 유용 할 수 있습니다. 이 매개 변수는 실제 행만 계산할 때 꺼지고 정확하지 않습니다. 시간이 필요합니다. 이 매개 변수는 효과가 없습니다auto_explain.log_analyze가 활성화되었습니다. 이 매개 변수 기본적으로 켜져 있습니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

auto_explain.log_verbose(부울)

auto_explain.log_verbose제어 실행 계획이있을 때 장점 세부 사항이 인쇄되는지 여부 기록 된; 에 해당합니다.Verbose옵션설명. 이 매개 변수가 꺼져 있습니다 기본적으로. 수퍼 유저만이 설정을 변경할 수 있습니다.

auto_explain.log_format(enum)

auto_explain.log_format선택설명사용할 출력 형식. 그만큼 허용 값은텍스트, XML, JSONyaml. 기본값은 텍스트입니다. 슈퍼 사용자 만 할 수 있습니다 이 설정을 변경하십시오.

auto_explain.log_nested_statements(부울)

auto_explain.log_nested_statements중첩 된 명령문 (함수 내부에서 실행 된 진술)을 일으킨다 로깅으로 고려하십시오. 꺼지면 최상위 쿼리 만 있습니다 계획이 기록됩니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 슈퍼업자 만 이 설정을 변경할 수 있습니다.

일반적인 사용 에서이 매개 변수는에 설정됩니다.사설 토토 사이트.conf, 슈퍼업자가 변경할 수는 있지만 자신의 세션 내에서 비행기. 일반적인 사용법은 다음과 같습니다.

# 사설 토토 사이트.conf
shared_preload_libraries = 'auto_explain'

auto_explain.log_min_duration = '3s'

F.3.2. 예

postgres =# load 'auto_explain';
postgres =# set auto_explain.log_min_duration = 0;
postgres =# set auto_explain.log_analyze = true;
postgres =# count (*)
           pg_class에서 pg_index에서
           여기서 OID = Indrelid 및 Indisunique;

이것은 다음과 같은 로그 출력을 생성 할 수 있습니다.

로그 : 기간 : 3.651 MS 계획 :
  쿼리 텍스트 : count (*) 선택
              pg_class에서 pg_index에서
              여기서 OID = Indrelid 및 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의 SEQ 스캔 (비용 = 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)
                      필터 : Instunique