토토 캔 9.1.24 문서화 | ||||
---|---|---|---|---|
스포츠 토토 베트맨 : 문서 : 9.1 : Auth_delay | up | 부록 F. 추가 제공된 모듈 | 다음 |
theauto_explain모듈 제공 a 느린 진술의 실행 계획을 기록하는 수단 자동으로 실행하지 않고설명손으로. 이것은 특히입니다 최적화되지 않은 쿼리를 크게 추적하는 데 도움이됩니다 응용 프로그램.
모듈은 SQL 액세스 가능 함수를 제공하지 않습니다. 그것을 사용하려면 서버에 간단히로드하십시오. 당신은 그것을 an에로드 할 수 있습니다 개별 세션 :
로드 'auto_explain';
(당신은 그렇게하려면 슈퍼 유저가되어야합니다.) 더 일반적인 사용법은 다음과 같습니다. 를 포함하여 모든 세션에 예압auto_explaininshared_preload_librariesin토토 캔.conf. 그런 다음 추적 할 수 있습니다 언제 발생하든 예기치 않게 쿼리가 느려집니다. 물론 그에 대한 오버 헤드 가격이 있습니다.
제어하는 몇 가지 구성 매개 변수가 있습니다 행동auto_explain. 주목하십시오 기본 동작은 아무것도하지 않는 것이므로 최소한 설정해야합니다auto_explain.log_min_duration당신이 결과를 원합니다.
auto_explain.log_min_duration최소 명령문 실행 시간은 밀리 초입니다. 이로 인해 성명서의 계획이 기록됩니다. 이것을 제로 로그로 설정하면 모든 계획이 있습니다. 마이너스 (the 기본값)는 계획의 로깅을 비활성화합니다. 예를 들어, 당신이 있다면 설정250ms그런 다음 모두 250ms 이상 실행되는 명령문은 기록됩니다. 오직 슈퍼업자는이 설정을 변경할 수 있습니다.
auto_explain.log_analyze원인분석출력, 그냥보다는설명출력, 실행 계획이 기록 될 때 인쇄하려면. 이것 기본적으로 매개 변수가 꺼져 있습니다. 슈퍼 사용자 만 변경할 수 있습니다 이 설정.
참고 :이 매개 변수가 켜져있을 때 플랜 노드 타이밍은 모든 진술에 대해 발생합니다 그들이 충분히 오래 달리는 지 여부에 관계없이 실행되었습니다 실제로 기록됩니다. 이것은 매우 가질 수 있습니다 성능에 부정적인 영향.
auto_explain.log_verbose원인Verbose 설명출력, 그냥보다는설명출력, 실행 계획이 기록 될 때 인쇄하려면. 이것 기본적으로 매개 변수가 꺼져 있습니다. 슈퍼 사용자 만 변경할 수 있습니다 이 설정.
auto_explain.log_buffers원인설명 (분석, 버퍼)그냥보다는 출력설명출력 실행 계획이 기록됩니다. 이 매개 변수는 꺼져 있습니다 기본. 수퍼 유저만이 설정을 변경할 수 있습니다. 이것 매개 변수는에 영향을 미치지 않습니다.auto_explain.log_analyze매개 변수입니다 세트.
auto_explain.log_format선택설명출력 사용할 형식. 허용 값은입니다.텍스트, XML, JSON및yaml. 기본값은 텍스트입니다. 슈퍼업자 만 이 설정을 변경할 수 있습니다.
auto_explain.log_nested_statements원인 중첩 진술 (함수 내부에서 실행 된 진술) 로깅을 위해 고려됩니다. 그것이 꺼져있을 때만 최상위 쿼리 계획이 기록됩니다. 이 매개 변수가 꺼져 있습니다 기본적으로. 수퍼 유저만이 설정을 변경할 수 있습니다.
이 매개 변수를 설정하려면토토 캔.conf파일, 추가해야합니다auto_explaintocustom_variable_classes. 일반적인 사용법은 다음과 같습니다.
# 토토 캔.conf shared_preload_libraries = 'auto_explain' custom_variable_classes = 'auto_explain' auto_explain.log_min_duration = '3s'
postgres =# load 'auto_explain'; postgres =# set auto_explain.log_min_duration = 0; 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
Takahiro Itagaki<16308_16340