그토토 베이모듈은 실행하지 않고도 느린 명령문의 실행 계획을 자동으로 기록하는 수단을 제공합니다.설명손으로. 이는 대규모 애플리케이션에서 최적화되지 않은 쿼리를 추적하는 데 특히 유용합니다.
모듈은 SQL 액세스 기능을 제공하지 않습니다. 이를 사용하려면 서버에 로드하기만 하면 됩니다. 개별 세션에 로드할 수 있습니다.
LOAD '토토 베이';
(그렇게 하려면 수퍼유저여야 합니다.) 보다 일반적인 사용법은 이를 포함하여 일부 또는 모든 세션에 미리 로드하는 것입니다.토토 베이에session_preload_libraries또는shared_preload_librariesinpostgresql.conf. 그러면 언제 발생하든 예기치 않게 느린 쿼리를 추적할 수 있습니다. 물론 그에 따른 오버헤드 비용이 있습니다.
동작을 제어하는 여러 구성 매개변수가 있습니다.토토 베이. 기본 동작은 아무것도 하지 않는 것이므로 최소한 설정해야 합니다.토토 베이.log_min_duration결과를 원한다면.
토토 베이.log_min_duration (정수) #토토 베이.log_min_duration은 명령문 계획이 기록되는 최소 명령문 실행 시간(밀리초)입니다. 이것을 다음과 같이 설정합니다.0모든 계획을 기록합니다.-1(기본값)은 계획 로깅을 비활성화합니다. 예를 들어, 다음과 같이 설정하면250ms그러면 250ms 이상 실행되는 모든 명령문이 기록됩니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_parameter_max_length (정수) #토토 베이.log_parameter_max_length쿼리 매개변수 값의 로깅을 제어합니다. 값은-1(기본값)은 매개변수 값 전체를 기록합니다.0매개변수 값 로깅을 비활성화합니다. 0보다 큰 값은 각 매개변수 값을 해당 바이트 수로 자릅니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_analyze (부울) #토토 베이.log_analyze원인분석 설명단순한 것이 아닌 출력설명출력, 실행 계획이 기록될 때 인쇄됩니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
이 매개변수가 켜져 있으면 실행된 모든 명령문에 대해 계획 노드별 타이밍이 발생하며, 실제로 기록될 만큼 오랫동안 실행되는지 여부에 관계가 없습니다. 이는 성능에 매우 부정적인 영향을 미칠 수 있습니다. 끄는 중토토 베이.log_timing더 적은 정보를 얻는 대가로 성능 비용을 개선합니다.
토토 베이.log_buffers (부울) #토토 베이.log_buffers실행 계획이 기록될 때 버퍼 사용 통계를 인쇄할지 여부를 제어합니다. 이는 다음과 같습니다.버퍼옵션설명. 이 매개변수는 다음을 제외하고는 효과가 없습니다.토토 베이.log_analyze활성화되었습니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_wal (부울) #토토 베이.log_wal실행 계획이 기록될 때 WAL 사용 통계를 인쇄할지 여부를 제어합니다. 이는 다음과 같습니다.WAL옵션설명. 이 매개변수는 다음을 제외하고는 효과가 없습니다.토토 베이.log_analyze활성화되었습니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_timing (부울) #토토 베이.log_timing실행 계획이 기록될 때 노드별 타이밍 정보가 인쇄되는지 여부를 제어합니다. 이는 다음과 같습니다.타이밍옵션설명. 시스템 시계를 반복적으로 읽는 오버헤드로 인해 일부 시스템에서는 쿼리 속도가 크게 느려질 수 있으므로 정확한 시간이 아닌 실제 행 개수만 필요한 경우 이 매개변수를 off로 설정하는 것이 유용할 수 있습니다. 이 매개변수는 다음을 제외하고는 효과가 없습니다.토토 베이.log_analyze활성화되었습니다. 이 매개변수는 기본적으로 켜져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_triggers (부울) #토토 베이.log_triggers실행 계획이 기록될 때 트리거 실행 통계가 포함됩니다. 이 매개변수는 다음을 제외하고는 효과가 없습니다.토토 베이.log_analyze활성화되었습니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_verbose (부울) #토토 베이.log_verbose실행 계획이 기록될 때 자세한 세부 정보를 인쇄할지 여부를 제어합니다. 이는 다음과 같습니다.상세옵션설명. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_settings (부울) #토토 베이.log_settings실행 계획이 기록될 때 수정된 구성 옵션에 대한 정보가 인쇄되는지 여부를 제어합니다. 기본 제공 기본값과 다른 값으로 쿼리 계획에 영향을 주는 옵션만 출력에 포함됩니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_format (열거) #토토 베이.log_format선택설명출력 형식을 사용할 것입니다. 허용되는 값은 다음과 같습니다.텍스트, xml, json및yaml. 기본값은 텍스트입니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_level (열거형) #토토 베이.log_level토토 베이이 쿼리 계획을 기록할 로그 수준을 선택합니다. 유효한 값은 다음과 같습니다.디버그5, 디버그4, 디버그3, 디버그2, 디버그1, 정보, 공지사항, 경고및로그. 기본값은로그. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.log_nested_statements (부울) #토토 베이.log_nested_statements중첩된 문(함수 내에서 실행되는 문)이 로깅 대상으로 간주됩니다. 꺼져 있으면 최상위 쿼리 계획만 기록됩니다. 이 매개변수는 기본적으로 꺼져 있습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
토토 베이.sample_rate (진짜) #토토 베이.sample_rate토토 베이이 각 세션의 명령문 중 일부만 설명하도록 합니다. 기본값은 1이며, 이는 모든 쿼리를 설명한다는 의미입니다. 중첩된 문의 경우 모두 설명되거나 설명되지 않습니다. 슈퍼유저만 이 설정을 변경할 수 있습니다.
일반적인 사용에서 이 매개변수는 다음에서 설정됩니다.postgresql.conf, 하지만 수퍼유저는 자신의 세션 내에서 즉시 변경할 수 있습니다. 일반적인 사용법은 다음과 같습니다:
# postgresql.conf session_preload_libraries = '토토 베이' 토토 베이.log_min_duration = '3초'
postgres=# LOAD '토토 베이';
postgres=# SET 토토 베이.log_min_duration = 0;
postgres=# SET 토토 베이.log_analyze = true;
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
이타가키 다카히로<itagaki.takahiro@oss.ntt.co.jp
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.