이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : F.30. 토토 사이트 - SQL 계획 및 실행의 통계 추적버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.32. 토토

토토모듈 모든 SQL의 실행 통계 추적 수단을 제공합니다. 서버에서 실행 한 진술.

추가하여 모듈을로드해야합니다토토toshared_preload_librariesinpostgresql.conf가 필요하기 때문입니다 추가 공유 메모리. 이것은 서버가 다시 시작되었음을 의미합니다 모듈을 추가하거나 제거해야합니다.

F.32.1. 그만큼토토보기

모듈에 의해 수집 된 통계는 이라는 시스템보기토토. 이보기에는 하나가 포함되어 있습니다 각 별도의 쿼리 텍스트, 데이터베이스 ID 및 사용자 ID에 대해 행 모듈이있는 최대 뚜렷한 문장 수로 추적 할 수 있습니다). 보기의 열은에 표시됩니다.테이블 F-22.

표 F-22.토토

이름 type 참조 설명
userID OID pg_authid.Oid 진술을 실행 한 사용자의 OID
dbid OID pg_database.Oid 진술이있는 데이터베이스의 OID 실행
쿼리 텍스트 진술서의 텍스트 (최대track_activity_query_size바이트)
전화 bigint 실행 된 횟수
Total_Time 이중 정밀 성명서에 소비 된 총 시간, 초
bigint 총 행에 의해 검색되거나 영향을받는 총 행 수 성명
shared_blks_hit bigint 총 공유 블록의 총 수 성명
shared_blks_read bigint 공유 블록의 총 수가 읽습니다 성명
shared_blks_written bigint 총 공유 블록의 총 수 성명
local_blks_hit bigint 총계 블록의 총 수는 성명
local_blks_read bigint 총계 블록의 총 수가 읽습니다 성명
local_blks_written bigint 총계 블록의 총 수는 성명
temp_blks_read bigint 총 임시 블록의 총 수가 읽습니다 성명
temp_blks_written bigint 총 임시 블록의 총 수는 성명

이보기 및 함수토토_reset, 만 사용할 수 있습니다 데이터베이스에서는 특별히 설치되었습니다 설치토토확장. 그러나 모든 데이터베이스에서 통계가 추적됩니다 언제든지토토모듈이로드됩니다 견해의 존재에 관계없이 서버.

보안상의 이유로, 비 슈퍼 사용자는 볼 수 없습니다 다른 사용자가 실행 한 쿼리 텍스트. 그들은 볼 수 있습니다 그러나 뷰가 설치된 경우 통계 데이터 베이스.

진술은 그들이 가지고있는 경우 동일하게 간주됩니다. 외부의 값에 관계없이 동일한 텍스트 진술에 사용 된 매개 변수. 외부 매개 변수 사용 진술을 함께 그룹화하는 데 도움이되고 통계가 더 유용합니다.

F.32.2. 기능

토토_reset () 반환 void

토토_reset지금까지 수집 한 모든 통계 폐기토토. 기본적으로 이것은입니다 기능은 슈퍼 유행자 만 실행할 수 있습니다.

F.32.3. 구성 매개 변수

토토.max(Integer)

토토.maxis 모듈에서 추적 한 최대 명령문 수 (즉, 의 최대 행 수토토보기). 더 있다면 그것보다 뚜렷한 진술이 관찰됩니다 가장 잘 수행되지 않은 진술은 폐기됩니다. 그만큼 기본값은 1000입니다.이 매개 변수는 서버 시작.

토토.track(enum)

토토.track모듈에 의해 계산되는 진술을 제어합니다. 지정TOP최상위를 추적합니다 진술 (고객이 직접 발행 한 사람),all중첩 된 진술을 추적합니다 ( 함수 내에서 호출 된 진술) 또는없음비활성화. 기본값은입니다.TOP. 슈퍼 사용자 만 변경할 수 있습니다 이 설정.

토토.track_utility(부울)

토토.track_utility컨트롤 유틸리티 명령이 모듈에 의해 추적되는지 여부 유틸리티 명령은 이외의 모든 명령입니다.select, 삽입, 업데이트and삭제. 기본값은입니다.on. 슈퍼업자만이이를 변경할 수 있습니다 환경.

토토.save(부울)

토토.save명세서 통계를 저장할지 여부를 지정합니다 서버 종료. 경우off그러면 통계가 종료시 저장되지 않거나 다시로드되지 않습니다. 서버 시작. 기본값은입니다.on. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄.

모듈에는 추가 공유 메모리가 필요합니다 에 대한토토.max * track_activity_query_size바이트. 이 메모리는 모듈이있을 때마다 소비됩니다. 하더라도로드토토.track없음.

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

# postgresql.conf
shared_preload_libraries = '토토'

custom_variable_classes = '토토'
토토.max = 10000
토토.track = all

F.32.4. 샘플 출력

벤치 =# 선택 토토_reset ();

$ pgbench -i 벤치
$ pgbench -c10 -t300 -m 준비된 벤치

벤치 =# \ x
벤치 =# 선택 쿼리, 통화, Total_Time, 행, 100.0 * shared_blks_hit /
               nullif (shared_blks_hit + shared_blks_read, 0) hit_percent
          PG_STAT_STATEMENTS에서 TOTAL_TIME DESC LIMIT 5에 의한 순서 5;
-[레코드 1] ----------------------------------------------------------------------
쿼리 | pgbench_branches 업데이트 bbalance = bbalance + $ 1 여기서 bid = $ 2;
전화 | 3000
Total_Time | 9.60900100000002
줄 | 2836
hit_percent | 99.9778970000200936
-[레코드 2] -------------------------------------------------------------------------------
쿼리 | PGBENCH_TELLERS 업데이트 TBALANCE = TBALANCE + $ 1 여기서 tid = $ 2;
전화 | 3000
Total_Time | 8.015156
줄 | 2990
hit_percent | 99.9731126579631345
-[레코드 3] ---------------------------------------------------------------------
쿼리 | stdin에서 pgbench_accounts를 복사하십시오
전화 | 1
Total_Time | 0.310624
줄 | 100000
hit_percent | 0.30395136778115501520
-[레코드 4] -------------------------------------------------------------------------------
쿼리 | PGBENCH_ACCOUNTS 업데이트 세트 Abalance = Abalance + $ 1 여기서 AID = $ 2;
전화 | 3000
Total_Time | 0.27174199999997
줄 | 3000
hit_percent | 93.7968855088209426
-[레코드 5] -------------------------------------------------------------------------------
쿼리 | ALTER TABLE PGBENCH_ACCOUTTS 기본 키 추가 (AID)
전화 | 1
Total_Time | 0.08142
줄 | 0
hit_percent | 34.4947735191637631