이 문서는 지원되지 않는 버전의 젠 토토을위한 것입니다.
당신은에 대해 동일한 페이지를 볼 수 있습니다토토 사이트 순위 PostgreSQL : 문서 : 17 : 27.2. 누적 통계 시스템버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

26.2. 젠 토토 수집기

젠 토토's젠 토토 수집가는 지원하는 서브 시스템입니다 서버 활동에 대한 정보 수집 및보고. 현재 컬렉터는 테이블 및 인덱스에 대한 액세스를 계산할 수 있습니다. 디스크 블록 및 개별 열 용어에서. 또한 총계를 추적합니다 각 테이블의 행 수와 마지막 진공 및 분석 각 테이블에 대한 시간. 또한 사용자 정의에 대한 호출을 계산할 수 있습니다 기능과 각각의 총 시간.

젠 토토도 지원합니다 현재 다른 사람이 실행중인 정확한 명령을 결정합니다 서버 프로세스. 이것은 그렇지 않은 독립적 인 시설입니다 수집가 프로세스에 의존합니다.

26.2.1. 젠 토토 수집 구성

젠 토토 수집이 쿼리에 약간의 오버 헤드가 추가되므로 실행, 시스템은 수집 여부를 구성 할 수 있습니다. 정보를 수집하십시오. 이것은 구성에 의해 제어됩니다 일반적으로 설정된 매개 변수젠 토토.conf. (보다18 장설정에 대한 자세한 내용 구성 매개 변수.)

매개 변수track_counts테이블 및 색인에 대한 젠 토토가 수집되는지 여부를 제어합니다 접근.

매개 변수Track_Functions사용자 정의 함수의 사용 추적 활성화.

매개 변수track_activities서버 프로세스.

일반적으로 이러한 매개 변수는에 설정됩니다.젠 토토.conf모든 사람에게 적용되도록 서버 프로세스이지만 켜거나 끄는 것이 가능합니다. 를 사용하는 개별 세션SET명령. (일반 사용자를 방지하기 위해 관리자로부터 활동을 숨기고 슈퍼업자 만 이 매개 변수를로 변경할 수 있습니다.SET.)

젠 토토 수집가는 백엔드와 통신합니다 임시를 통해 정보가 필요합니다 (Autovacuum 포함) 파일. 이 파일은에 저장됩니다.PG_STAT_TMP서브 디렉토리. 우체국 장 종료, 젠 토토 데이터의 영구 사본이 저장됩니다. 에서글로벌하위 디렉토리. 을 위한 성능 향상, 매개 변수stats_temp_directoryRAM 기반 파일 시스템을 가리키면 물리적 인 감소 I/O 요구 사항.

26.2.2. 수집 된 시청 젠 토토

몇 가지 사전 정의 된 뷰, 나열된테이블 26-1, 젠 토토 결과를 보여줄 수 있습니다 수집. 또는 The를 사용하여 사용자 정의보기를 구축 할 수 있습니다 기본 젠 토토 기능.

통계를 사용하여 현재 활동을 모니터링 할 때 정보가 업데이트되지 않는다는 것을 인식하는 것이 중요합니다 순간적으로. 각 개별 서버 프로세스는 새로 전송됩니다 유휴 상태가되기 직전에 수집가에게 통계적 계산; 그래서 여전히 진행중인 쿼리 또는 거래는 총계가 표시됩니다. 또한 수집가 자체는 새로운 보고서를 제출합니다 최대 한 번pgstat_stat_interval밀리 초 (서버를 구축하는 동안 변경되지 않는 한 500). 그래서 표시된 정보는 실제 활동보다 뒤떨어집니다. 하지만, 현재 수집 한 현재 쿼리 정보track_activities항상 최신입니다.

또 다른 중요한 점은 서버 프로세스가 이러한 통계를 표시하도록 요청하면 먼저 가장 최근의 보고서는 수집기 프로세스에 의해 방출 된 다음 이 스냅 샷을 모든 통계적 뷰에 계속 사용하고 현재 거래가 끝날 때까지 기능합니다. 그래서 계속해서 통계는 변하지 않는 것으로 보입니다. 현재 거래. 마찬가지로,에 대한 정보 모든 프로세스의 현재 쿼리는 정보는 먼저 거래 내에서 요청됩니다 거래 내내 동일한 정보가 표시됩니다. 이것은 버그가 아닌 기능입니다. 통계에 대한 몇 가지 쿼리와 결과를 상관시킵니다 숫자가 당신 아래에서 바뀌는 것을 걱정하지 않고. 그러나 각 쿼리마다 새로운 결과를보고 싶다면 트랜잭션 블록 외부에서 쿼리를 수행하십시오. 또는 당신은 호출 할 수 있습니다PG_STAT_CLEAR_SNAPSHOT() 현재 트랜잭션의 통계 스냅 샷 (있는 경우). 그만큼 다음으로 통계 정보를 사용하면 새로운 스냅 샷이 발생합니다. 가져 오기 위해.

표 26-1. 표준 젠 토토보기

보기 설명
pg_stat_activity 서버 프로세스 당 1 행, 데이터베이스 OID 표시, 데이터베이스 이름, 프로세스id, 사용자 OID, 사용자 이름, 현재 쿼리, 쿼리의 대기 상태, 시간의 시간 현재 트랜잭션 및 현재 쿼리가 실행되기 시작했고 프로세스가 시작된 시간과 고객의 시간 주소 및 포트 번호. 데이터를보고하는 열 매개 변수가없는 한 현재 쿼리를 사용할 수 있습니다track_activities꺼졌습니다. 또한,이 열은 볼 수 있습니다 보기를 검사하는 사용자가 슈퍼 유저 또는 보고되는 프로세스를 소유 한 사용자와 동일합니다 에.
PG_STAT_BGWRITER 한 행만 클러스터 전체 젠 토토를 표시합니다 배경 작가 : 예정된 체크 포인트 수, 요청 된 체크 포인트, 체크 포인트로 작성된 버퍼 청소 스캔 및 횟수 배경 작가는 청소 스캔을 중단했습니다 너무 많은 버퍼를 썼습니다. 젠 토토도 포함됩니다 작성된 버퍼를 포함하여 공유 버퍼 풀 정보 백엔드 (즉, 배경 작가가 아니라) 총 버퍼가 할당되었습니다.
PG_STAT_DATABASE 데이터베이스 당 하나의 행, 데이터베이스 OID 표시, 데이터베이스 이름, 활성 서버 프로세스 수 해당 데이터베이스에 연결된 트랜잭션 수 해당 데이터베이스, 총 디스크에서 커밋 및 롤백 블록 읽기, 전체 버퍼 히트 (즉, 블록 읽기 이미 버퍼에서 블록을 찾아서 피하는 요청 캐시), 반환, 가져 오기, 삽입, 행 수, 업데이트 및 삭제.
pg_stat_all_tables 현재 데이터베이스의 각 테이블에 대해 (포함 토스트 테이블), 테이블 OID, 스키마 및 테이블 이름, 시작된 순차 스캔 수, 라이브 수 순차적 스캔, 인덱스 스캔 횟수에 의해 행하는 행 시작 (테이블에 속하는 모든 인덱스에 따라), 인덱스 스캔에 의해 가져온 라이브 행의 수, 행 삽입, 업데이트 및 삭제, 행 수 뜨거운 업데이트 (즉, 별도의 인덱스 업데이트 없음), 마지막으로 테이블의 라이브 및 죽은 줄의 수 수동으로 진공 청소기로, 마지막으로 진공 청소기 Autovacuum 데몬은 마지막으로 분석되었습니다 수동으로, 그리고 마지막 시간은 Autovacuum 데몬.
PG_STAT_SYS_TABLE 동일pg_stat_all_tables시스템 테이블이 표시됩니다.
PG_STAT_USER_TABLE 동일pg_stat_all_tables사용자 테이블이 표시됩니다.
PG_STAT_ALL_INDEXES 현재 데이터베이스의 각 인덱스에 대해 테이블 인덱스 OID, 스키마, 테이블 및 인덱스 이름, 번호 인덱스에 시작된 인덱스 스캔, 인덱스 수 인덱스 스캔 및 라이브 수에 의해 반환 된 항목 이를 사용하는 간단한 인덱스 스캔으로 가져온 테이블 행 색인.
PG_STAT_SYS_INDEXES 동일PG_STAT_ALL_INDEXES시스템 테이블의 인덱스가 표시됩니다.
PG_STAT_USER_INDEXES 동일PG_STAT_ALL_INDEXES사용자 테이블의 인덱스가 표시됩니다.
pg_statio_all_tables 현재 데이터베이스의 각 테이블에 대해 (포함 토스트 테이블), 테이블 OID, 스키마 및 테이블 이름, 해당 테이블에서 읽은 디스크 블록 수, 수 버퍼 히트, 디스크 블록 수는 읽기 및 버퍼입니다 해당 테이블의 모든 인덱스에서 히트, 디스크 번호 해당 테이블의 보조에서 읽기 및 버퍼 히트 블록 토스트 테이블 (있는 경우) 및 디스크 블록 번호 읽기 토스트 테이블의 인덱스에 대한 버퍼 히트.
PG_STATIO_SYS_TABLE 동일pg_statio_all_tables를 제외하고 시스템 테이블 만 표시됩니다.
pg_statio_user_tables 동일pg_statio_all_tables를 제외하고 사용자 테이블 만 표시됩니다.
PG_STATIO_ALL_INDEXES 현재 데이터베이스의 각 인덱스에 대해 테이블 인덱스 OID, 스키마, 테이블 및 인덱스 이름, 숫자 디스크 블록은 해당 색인의 읽기 및 버퍼 히트입니다.
PG_STATIO_SYS_INDEXES 동일PG_STATIO_ALL_INDEXES를 제외하고 시스템 테이블의 인덱스 만 표시됩니다.
PG_STATIO_USER_INDEXES 동일pg_statio_all_indexes를 제외하고 사용자 테이블의 인덱스 만 표시됩니다.
PG_STATIO_ALL_SEVESSENCES 현재 데이터베이스의 각 시퀀스 객체에 대해, 시퀀스 OID, 스키마 및 시퀀스 이름, 숫자 디스크 블록은 해당 시퀀스에서 읽기 및 버퍼 히트입니다.
PG_STATIO_SYS_SEVESSENCES 동일PG_STATIO_ALL_SEVESSENCES를 제외하고 시스템 시퀀스 만 표시됩니다. (현재, 시스템 없음 시퀀스가 정의 되므로이보기는 항상입니다 비어 있는.)
PG_STATIO_USER_SEATENCES 동일PG_STATIO_ALL_SEATENCES를 제외하고 사용자 시퀀스 만 표시됩니다.
PG_STAT_USER_FUNTIONS 모든 추적 함수, 기능 OID, 스키마, 이름, 전화 번호, 총 시간 및 자기 시간. 본인 시간은 기능에 소요되는 시간입니다. 그 자체로 총 시간에는 기능에 소요 된 시간이 포함됩니다 그것은 불렀다. 시간 값은 밀리 초입니다.

인덱스 젠 토토는 특히 유용합니다 사용중인 인덱스와 얼마나 효과적인 지 인덱스를 결정하십시오. 이다.

시작젠 토토8.1, 인덱스는 직접 또는 직접 또는 경고 할 수 있습니다"비트 맵 스캔". 비트 맵에서 출력을 스캔합니다 여러 인덱스는 또는 또는 또는 규칙을 통해 결합 될 수 있습니다. 그렇습니다 개별 힙 행을 연관시키기가 어렵습니다 비트 맵 스캔을 사용하는 경우 특정 인덱스. 따라서 a 비트 맵 스캔은를 증가시킵니다.PG_STAT_ALL_INDEXES.idx_tup_read인덱스 (es)의 경우 수 있습니다 사용하고를 증가시킵니다.pg_stat_all_tables.idx_tup_fetch테이블을 계산하지만 영향을 미치지 않습니다PG_STAT_ALL_INDEXES.idx_tup_fetch.

참고 :젠 토토8.1,idx_tup_readandidx_tup_fetch카운트는 본질적으로였습니다 항상 동일합니다. 이제 그들은 없이도 다를 수 있습니다 비트 맵 스캔 고려idx_tup_read인덱스 항목 계산 인덱스에서 검색idx_tup_fetch라이브 행이 가져온 카운트 테이블에서; 후자는 죽은 사람이 적을 것입니다 지수를 사용하여 커밋되지 않은 행을 가져옵니다.

thePG_STATIO_보기는입니다 버퍼의 효과를 결정하는 데 주로 유용합니다 은닉처. 실제 디스크 읽기 수가 훨씬 작을 때 버퍼 히트 수보다 캐시가 만족 스럽습니다. 커널 호출을 호출하지 않고 대부분의 요청을 읽습니다. 하지만, 이 통계는 전체 이야기를 제공하지 않습니다. 어느젠 토토손잡이 디스크 I/O,에없는 데이터젠 토토버퍼 캐시가 여전히 존재할 수 있습니다 커널의 I/O 캐시에서 여전히 가져올 수 있습니다. 물리적 읽기를 필요로하지 않고. 관심있는 사용자 더 자세한 정보 획득젠 토토I/O 동작을 사용하는 것이 좋습니다 그만큼젠 토토젠 토토 운영 체제 유틸리티와 함께 ​​수집가 커널의 I/O 처리에 대한 통찰력을 허용합니다.

통계를 보는 다른 방법은 동일한 기본 통계 액세스를 사용하는 쿼리 작성 이러한 표준보기와 같은 기능. 이러한 기능은입니다 에 나열됨테이블 26-2. 다이타베이스 액세스 기능은 데이터베이스 OID를 취합니다 보고 할 데이터베이스를 식별하는 인수. 그만큼 테이블 및 인덱스 별 기능은 테이블 또는 인덱스 OID를 취합니다. 함수 통계의 함수는 기능 OID를 취합니다. (현재의 테이블, 인덱스 및 기능 만 데이터베이스는 이러한 기능으로 볼 수 있습니다.) 서버 프로세스 액세스 기능은 서버 프로세스를 취합니다 현재 활성화 된 수에서 현재 활성화 된 숫자 서버 프로세스.

표 26-2. 젠 토토 액세스 기능

기능 반환 유형 설명
PG_STAT_GET_DB_NUMBACKENDS(OID) Integer 데이터베이스의 활성 서버 프로세스 수
PG_STAT_GET_DB_XACT_COMMIT(OID) bigint 데이터베이스에 커밋 된 트랜잭션
PG_STAT_GET_DB_XACT_ROLLBACK(OID) bigint 데이터베이스에서 다시 롤백
pg_stat_get_db_blocks_fetched(OID) bigint 디스크 블록 페치 요청 수 데이터 베이스
PG_STAT_GET_DB_BLOCKS_HIT(OID) bigint 캐시에서 발견 된 디스크 블록 페치 요청 수 데이터베이스
pg_stat_get_db_tuples_returned(OID) bigint 데이터베이스를 위해 반환 된 튜플 수
pg_stat_get_db_tuples_fetched(OID) bigint 데이터베이스를 위해 가져온 튜플 수
PG_STAT_GET_DB_TUPLES_INSERTED(OID) bigint 데이터베이스에 삽입 된 튜플 수
pg_stat_get_db_tuples_updated(OID) bigint 데이터베이스에서 업데이트 된 튜플 수
pg_stat_get_db_tuples_deleted(OID) bigint 데이터베이스에서 삭제 된 튜플 수
PG_STAT_GET_NUMSCANS(OID) bigint 인수 일 때 수행 된 순차적 스캔 수 테이블 또는 인수가있을 때 수행 된 인덱스 스캔 수 인덱스
pg_stat_get_tuples_returned(OID) bigint 순차 스캔에 의해 읽는 행 수 인수는 테이블 또는 인덱스 항목 수입니다 인수가 색인 일 때 반환 됨
pg_stat_get_tuples_fetched(OID) bigint 비트 맵 스캔에 의해 가져온 테이블 행의 수 인수는 테이블이거나 단순하게 가져온 테이블 행입니다. 인수가 인덱스를 사용하여 인덱스 스캔 색인
PG_STAT_GET_TUPLES_INSERTED(OID) bigint 표에 삽입 된 행 수
PG_STAT_GET_TUPLES_UPDATED(OID) bigint ​​표에 업데이트 된 행 수 (핫 포함 업데이트)
pg_stat_get_tuples_deleted(OID) bigint 표에서 삭제 된 행 수
PG_STAT_GET_TUPLES_HOT_UPDATED(OID) bigint 표에 열렬한 행 수
pg_stat_get_live_tuples(OID) bigint 테이블의 라이브 행 수
pg_stat_get_dead_tuples(OID) bigint 테이블의 죽은 줄 수
pg_stat_get_blocks_fetched(OID) bigint 테이블 또는 색인
PG_STAT_GET_BLOCKS_HIT(OID) bigint 캐시에 발견 된 디스크 블록 요청 수 테이블 또는 색인
PG_STAT_GET_LAST_VACUUM_TIME(OID) TimesTamptz 사용자가 시작한 마지막 진공 시간 이 표
PG_STAT_GET_LAST_LAST_AUTOVACUUM_TIME(OID) Timestamptz Autovacuum에 의해 시작된 마지막 진공 시간 이 테이블의 데몬
pg_stat_get_last_analyze_time(OID) TimesTamptz 사용자가 시작한 마지막 분석 시간 이 표
pg_stat_get_last_autoanalyze_time(OID) Timestamptz 마지막 분석 시간 이 테이블의 Autovacuum 데몬
pg_backend_pid() 정수 서버 프로세스의 프로세스 ID 현재 세션
pg_stat_get_activity(Integer) Setof Record 백엔드에 대한 정보 기록을 반환합니다 지정된 PID 또는 각 활성에 대한 1 개의 레코드로 시스템에서 백엔드 인 경우NULL지정되어 있습니다. 반환 된 필드는에서와 동일합니다 그만큼pg_stat_activity보기
pg_stat_get_function_calls(OID) bigint 함수가 호출 된 횟수.
pg_stat_get_function_time(OID) bigint 함수에 소비 된 총 벽 시계 시간 마이크로 초. 기능에 소요되는 시간이 포함됩니다 이것에 의해 호출됩니다.
pg_stat_get_function_self_time(OID) bigint 이 기능에만 소요되는 시간. 시간을 보낸 시간 호출 함수는 제외됩니다.
pg_stat_get_backend_idset() 정수 세트 현재 활성 서버 프로세스 번호 세트 (1에서 활성 서버 프로세스 수에서). 보다 텍스트의 사용 예
pg_stat_get_backend_pid(정수) 정수 지정된 서버 프로세스의 프로세스 ID
pg_stat_get_backend_dbid(Integer) OID 지정된 서버 프로세스의 데이터베이스 ID
PG_STAT_GET_BACKEND_USERID(정수) OID 지정된 서버 프로세스의 사용자 ID
pg_stat_get_backend_activity(정수) 텍스트 지정된 서버 프로세스의 활성 명령이지만 현재 사용자가 슈퍼 사용자이거나 동일 한 경우에만 쿼리중인 세션의 사용자 (및40323_40341켜짐)
pg_stat_get_backend_waiting(정수) 부울 주어진 서버 프로세스가 잠금, 그러나 현재 사용자가 슈퍼 사용자 인 경우에만 세션과 동일한 사용자가 질문을받습니다 (및track_activitiesis on)
pg_stat_get_backend_activity_start(정수) 시간대가있는 타임 스탬프 주어진 서버 프로세스 시간 ' 현재 실행중인 쿼리가 시작되었지만 현재 사용자는 수퍼 유저 또는 동일한 사용자입니다. 세션이 쿼리 중입니다 (및track_activitiesis 켜짐)
PG_STAT_GET_BACKEND_XACT_START(Integer) 시간대가있는 타임 스탬프 주어진 서버 프로세스 시간 ' 현재 거래 실행은 시작되었지만 만 시작되었습니다 현재 사용자가 슈퍼 사용자이거나 같은 사용자 인 경우 세션이 쿼리되는 세션의 것 (andtrack_activities켜짐)
pg_stat_get_backend_start(정수) 시간대가있는 타임 스탬프 주어진 서버 프로세스의 시간 현재 사용자가 슈퍼 사용자가 아닌 경우 시작 또는 NULL 세션과 같은 사용자도 쿼리
pg_stat_get_backend_client_addr(정수) inet 주어진에 연결된 클라이언트의 IP 주소 서버 프로세스. 연결이 유닉스를 초과하면 NULL 도메인 소켓. 또한 현재 사용자가 아닌 경우 NULL 세션과 같은 슈퍼 사용자 나 동일한 사용자 쿼리
pg_stat_get_backend_client_port(정수) 정수 클라이언트의 TCP 포트 번호 주어진 서버 프로세스. -1 연결이 a를 초과하는 경우 유닉스 도메인 소켓. 현재 사용자가 아닌 경우 NULL 세션과 같은 슈퍼 사용자 나 동일한 사용자 쿼리
PG_STAT_GET_BGWRITER_TIMED_CHECKPOINTS() bigint 배경 작가의 횟수 시간이 정한 체크 포인트 시작 (이기 때문에Checkpoint_Timeout시간이 있습니다 만료 됨)
pg_stat_get_bgwriter_requested_checkpoints() bigint 배경 작가의 횟수 백엔드의 요청에 따라 체크 포인트를 시작했습니다 때문에Checkpoint_segments를 초과했습니다 때문에Checkpoint명령 발행되었습니다
pg_stat_get_bgwriter_buf_written_checkpoints() bigint 배경에서 작성한 버퍼 수 체크 포인트 중 작가
PG_STAT_GET_BGWRITER_BUF_WRITTEN_CLEAN() bigint 배경에서 작성한 버퍼 수 더러운 페이지의 일상적인 청소를위한 작가
PG_STAT_GET_BGWRITER_MAXWRITTEN_CLEAN() bigint 배경 작가의 횟수 청소 스캔이 더 많이 작성 되었기 때문에 중지되었습니다 버퍼는에 지정된 것보다bgwriter_lru_maxpages매개 변수
PG_STAT_GET_BUF_WRITTEN_BACKEND() bigint 백엔드가 작성한 버퍼 수 그들은 새로운 버퍼를 할당해야했습니다
PG_STAT_GET_BUF_ALLOC() bigint 총 버퍼 할당 수
PG_STAT_CLEAR_SNAPSHOT() void 현재 통계를 버립니다
PG_STAT_RESET() void 현재의 모든 통계 카운터를 재설정합니다 Database to Zero (Superuser 권한 필요)

참고 : pg_stat_get_blocks_fetched마이너스PG_STAT_GET_BLOCKS_HIT커널의 수read ()표, 인덱스 또는 데이터베이스에 대해 발행 된 통화; 숫자 실제 물리적 판독 값은 일반적으로로 인해 낮습니다 커널 수준 버퍼링. 그만큼*_blks_read통계 열에서 사용하십시오 뺄셈, 즉 마이너스 히트를 가져옵니다.

백엔드에 대한 정보에 액세스하는 모든 기능은 다음과 같습니다 백엔드 ID 번호로 인덱싱pg_stat_get_activityPID에 의해 색인화됩니다. 함수pg_stat_get_backend_idset제공 a 각 활성 서버마다 하나의 행을 생성하는 편리한 방법 프로세스. 예를 들어,를 보여려면PIDs 및 모든 서버의 현재 쿼리 프로세스 :

procpid로 pg_stat_get_backend_pid (s.backendid)를 선택하십시오.
       pg_stat_get_backend_activity (s.backendid)는 current_query입니다
    from (select pg_stat_get_backend_idset () as backendid)로 s;