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

27.2. 토토 베이 수집가

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

PostgreSQL도 지원합니다 현재 다른 사람이 실행중인 정확한 명령보고 서버 프로세스. 이것은 독립적 인 시설입니다 수집가 프로세스.

27.2.1. 통계 수집 구성

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

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

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

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

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

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

27.2.2. 수집 된 시청 통계

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

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

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

표 27-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_tables 동일PG_STAT_ALL_TABLE사용자 테이블이 표시됩니다.
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_tables 동일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_SEATENCES 현재 데이터베이스의 각 시퀀스 객체에 대해, 시퀀스 OID, 스키마 및 시퀀스 이름, 숫자 디스크 블록은 해당 시퀀스에서 읽기 및 버퍼 히트입니다.
PG_STATIO_SYS_SEVESSENCES 동일PG_STATIO_ALL_SEATENCES를 제외하고 시스템 시퀀스 만 표시됩니다. (현재, 시스템 없음 시퀀스가 정의 되므로이보기는 항상입니다 비어 있는.)
PG_STATIO_USER_SEVERENCES 동일PG_STATIO_ALL_SEATENCES를 제외하고 사용자 시퀀스 만 표시됩니다.
PG_STAT_USER_FINCTIONS 모든 추적 함수, 기능 OID, 스키마, 이름, 전화 번호, 총 시간 및 자기 시간. 본인 시간은 기능에 소요되는 시간입니다. 그 자체로 총 시간에는 기능에 소요 된 시간이 포함됩니다 그것은 불렀다. 시간 값은 밀리 초입니다.

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

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

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

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

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

표 27-2. 토토 베이 액세스 기능

기능 반환 유형 설명
pg_stat_get_db_numbackends(OID) 정수 데이터베이스의 활성 서버 프로세스 수
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 인수가 a 테이블 또는 인수가있을 때 수행 된 인덱스 스캔 수 인덱스
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 () Integer 서버 프로세스의 프로세스 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(정수) Integer 지정된 서버 프로세스의 프로세스 ID
pg_stat_get_backend_dbid(정수) OID 지정된 서버 프로세스의 데이터베이스 ID
PG_STAT_GET_BACKEND_USERID(정수) OID 지정된 서버 프로세스의 사용자 ID
pg_stat_get_backend_activity(Integer) 텍스트 지정된 서버 프로세스의 활성 명령이지만 현재 사용자가 슈퍼 사용자이거나 동일 한 경우에만 쿼리중인 세션의 사용자 (및track_activitiesis 켜짐)
pg_stat_get_backend_waiti토토 베이(정수) 부울 주어진 서버 프로세스가 잠금, 그러나 현재 사용자가 슈퍼 사용자 인 경우에만 세션과 동일한 사용자가 질문을받습니다 (및track_activitiesis on)
pg_stat_get_backend_activity_start(정수) 시간대가있는 타임 스탬프 주어진 서버 프로세스 시간 ' 현재 실행중인 쿼리가 시작되었지만 현재 사용자는 수퍼 유저 또는 동일한 사용자입니다. 세션이 쿼리 중입니다 (및track_activitiesis 켜짐)
PG_STAT_GET_BACKEND_XACT_START(Integer) 시간대가있는 타임 스탬프 주어진 서버 프로세스 시간 ' 현재 거래 실행은 시작되었지만 만 시작되었습니다 현재 사용자가 슈퍼 사용자이거나 같은 사용자 인 경우 세션이 쿼리되는 세션의 것 (andtrack_activitiesis 켜짐)
pg_stat_get_backend_start(정수) 시간대가있는 타임 스탬프 주어진 서버 프로세스의 시간 현재 사용자가 슈퍼 사용자가 아닌 경우 시작 또는 NULL 세션과 같은 사용자도 쿼리
pg_stat_get_backend_client_addr(정수) inet 주어진에 연결된 클라이언트의 IP 주소 서버 프로세스; 연결이 유닉스를 초과하면 NULL 도메인 소켓, 현재 사용자가 세션과 같은 슈퍼 사용자 나 동일한 사용자 쿼리
pg_stat_get_backend_client_port(정수) 정수 클라이언트의 TCP 포트 번호 주어진 서버 프로세스; -1 연결이 a를 초과하는 경우 UNIX 도메인 소켓, 현재 사용자가 세션과 같은 슈퍼 사용자 나 동일한 사용자 쿼리
PG_STAT_GET_BGWRITER_TIMED_CHECKPOINST () 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 Backend에 의해 작성된 버퍼 수 새로운 버퍼를 할당하는 데 필요
PG_STAT_GET_BUF_ALLOC () bigint 총 버퍼 할당 수
PG_STAT_CLEAR_SNAPSHOT () void 현재 통계를 버립니다
pg_stat_reset () void 현재의 모든 통계 카운터를 재설정합니다 Database to Zero (Superuser 권한 필요)
PG_STAT_RESET_SHARED(텍스트) void 공유 토토 베이 카운터 중 일부를 재설정하십시오 데이터베이스 클러스터가 0으로 켜집니다 (슈퍼 서서가 필요합니다 특권). 부름PG_STAT_RESET_SHARD ( 'BGWRITER')의지 제로PG_STAT_BGWRITER.
pg_stat_reset_si토토 베이le_table_counters(OID) void 단일 테이블 또는 인덱스에 대한 통계 재설정 통계. 현재 데이터베이스에서 0이됩니다 (슈퍼 서서가 필요합니다 특권)
pg_stat_reset_si토토 베이le_function_counters(OID) void 단일 함수에 대한 통계 재설정 현재 데이터베이스에서 0이됩니다 (슈퍼 서서가 필요합니다 특권)

참고 : 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;