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

F.3. 토토 베이 - 느린 쿼리의 로그 실행 계획#

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

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

로드 '토토 베이';

11591_11704토토 베이insession_preload_libraries또는shared_preload_librariesinpostgresql.conf. 그런 다음 언제 발생하든 예기치 않게 느린 쿼리를 추적 할 수 있습니다. 물론 그에 대한 오버 헤드 가격이 있습니다.

F.3.1. 구성 매개 변수#

동작을 제어하는 ​​몇 가지 구성 매개 변수가 있습니다.토토 베이. 기본 동작은 아무것도하지 않는 것이므로 최소한 설정해야합니다토토 베이.log_min_duration결과가 원하는 경우

토토 베이.log_min_duration(Integer) #

토토 베이.log_min_duration는 최소 명령문 실행 시간 (밀리 초)로 명세서의 계획이 기록되게합니다. 이것을 설정0모든 계획을 기록합니다.-1(기본값)는 계획의 로깅을 비활성화합니다. 예를 들어,로 설정하면250ms그러면 250ms 이상 실행되는 모든 진술이 기록됩니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_parameter_max_length(Integer) #

토토 베이.log_parameter_max_length쿼리 매개 변수 값의 로깅을 제어합니다.-1(기본값) 매개 변수 값을 전체로 기록합니다.0매개 변수 값의 로깅을 비활성화합니다. 0보다 큰 값은 각 파라미터 값을 많은 바이트로 잘라냅니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_analyze(부울) #

토토 베이.log_analyze원인분석단지 출력이 아니라 출력설명output, 실행 계획이 기록 될 때 인쇄 할 예정입니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

Note

이 매개 변수가 켜져 있으면 실제로 로그인 할 수있을 정도로 오래 실행되는지 여부에 관계없이 실행 된 모든 문에 대해 플랜 노드 타이밍이 발생합니다. 이것은 성능에 매우 부정적인 영향을 줄 수 있습니다. 끄기토토 베이.log_timing정보가 적은 가격으로 성능 비용을 개선합니다.

토토 베이.log_buffers(부울) #

토토 베이.log_buffers실행 계획이 기록 될 때 버퍼 사용 통계가 인쇄되는지 여부를 제어합니다. 에 해당합니다.버퍼옵션설명. 이 매개 변수는 효과가 없습니다토토 베이.log_analyze가 활성화되었습니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_wal(부울) #

토토 베이.log_wal실행 계획이 기록 될 때 WAL 사용 통계가 인쇄되는지 여부를 제어합니다. 에 해당합니다.Wal옵션설명. 이 매개 변수는 효과가 없습니다토토 베이.log_analyze가 활성화되었습니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_timing(부울) #

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

토토 베이.log_triggers(​​부울) #

토토 베이.log_triggers실행 계획이 기록 될 때 트리거 실행 통계가 포함되도록합니다. 이 매개 변수는 효과가 없습니다토토 베이.log_analyze가 활성화되었습니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_verbose(부울) #

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

토토 베이.log_settings(부울) #

토토 베이.log_settings실행 계획이 기록 될 때 수정 된 구성 옵션에 대한 정보가 인쇄되는지 여부를 제어합니다. 내장 기본값과 다른 값이있는 쿼리 계획에 영향을 미치는 옵션 만 출력에 포함됩니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_format(enum) #

토토 베이.log_format선택설명사용할 출력 형식. 허용 값은입니다.텍스트, XML, JSONyaml. 기본값은 텍스트입니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_level(enum) #

토토 베이.log_level토토 베이이 쿼리 계획을 기록하는 로그 레벨을 선택합니다. 유효한 값은Debug5, Debug4, Debug3, Debug2, Debug1, info, 통지, 경고log. 기본값은log. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.log_nested_statements(부울) #

토토 베이.log_nested_statements로깅을 위해 중첩 된 명령문 (함수 내부에서 실행 된 명령문)을 유발합니다. 꺼지면 최상위 쿼리 계획 만 기록됩니다. 이 매개 변수는 기본적으로 꺼져 있습니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

토토 베이.sample_rate(Real) #

토토 베이.sample_rate토토 베이이 각 세션에서 진술의 일부만 설명합니다. 기본값은 1이므로 모든 쿼리를 설명합니다. 중첩 된 진술의 경우, 모두 설명되거나 없을 것입니다. 수퍼 유저만이 설정을 변경할 수 있습니다.

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

# postgresql.conf
session_preload_libraries = '토토 베이'

토토 베이.log_min_duration = '3s'

F.3.2. 예#

postgres =# load '토토 베이';
postgres =# set 토토 베이.log_min_duration = 0;
postgres =# set 토토 베이.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.00 루프 = 1)
    - 해시 조인
          해시 콘크 : (pg_class.oid = pg_index.indrelid)
          - PG_CLASS의 SEQ 스캔 (비용 = 0.00..9.55 행 = 255 너비 = 4) (실제 시간 = 0.016..0.140 행 = 255.00 루프 = 1)
          - 해시 (비용 = 3.02..3.02 행 = 92 너비 = 4) (실제 시간 = 3.238..3.238 행 = 92.00 루프 = 1)
                버킷 : 1024 배치 : 1 메모리 사용량 : 4KB
                - PG_INDEX의 SEQ 스캔 (비용 = 0.00..3.02 행 = 92 너비 = 4) (실제 시간 = 0.008..3.187 행 = 92.00 루프 = 1)
                      필터 : Instunique

F.3.3. 작가#

Takahiro Itagaki