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

10.2. 토토 베이 수집가

PostgreSQL's토토 베이 수집가는 지원하는 서브 시스템입니다 서버 활동에 대한 정보 수집 및보고. 현재 컬렉터는 테이블 및 인덱스에 대한 액세스를 계산할 수 있습니다. 디스크 블록 및 개별 열 용어에서. 또한 지원합니다 현재 다른 사람이 실행중인 정확한 쿼리를 결정합니다 서버 프로세스.

10.2.1. 토토 베이 수집 구성

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

변수stats_start_collector로 설정해야합니다true토토 베이 수집가에게 전혀 출시됩니다. 이것은 기본값이며 권장됩니다 설정이지만 관심이 없으면 꺼질 수 있습니다. 통계 및 마지막 오버 헤드 방울마다 짜내고 싶습니다. (그러나 저축은 적을 것입니다.) 서버가 실행 중에 옵션을 변경할 수 없습니다.

변수stats_command_string, stats_block_levelstats_row_level정보의 양을 제어하십시오 실제로 수집가에게 보내져서 런타임 오버 헤드가 발생합니다. 이들은 각각 a 서버 프로세스는 현재 명령 문자열을 보냅니다. 디스크 블록 레벨 액세스 통계 및로드 레벨 액세스 수집가에 대한 통계. 일반적으로 이러한 변수는 설정됩니다 안에postgresql.conf가 적용되도록 모든 서버 프로세스에 대해서는하지만 켜거나 켜거나 를 사용하여 개별 서버 프로세스에서 꺼짐SET명령. (일반 사용자를 방지하기 위해 관리자로부터 활동을 숨기고 슈퍼업자 만 이러한 변수를로 변경할 수 있습니다.SET.)

중요 :변수 이후stats_command_string, stats_block_levelstats_row_level기본값으로거짓, 실제로 토토 베이는 수집되지 않습니다 기본 구성에서! 하나 이상을 돌려야합니다 당신이 유용한 결과를 얻기 전에 토토 베이 표시 기능.

10.2.2. 수집 된 시청 토토 베이

결과를 보여주기 위해 몇 가지 사전 정의 된 뷰를 사용할 수 있습니다 토토 베이 수집. 또는 사용자 정의를 구축 할 수 있습니다 기본 토토 베이 기능을 사용한 뷰.

통계를 사용하여 현재 활동을 모니터링 할 때 정보가 업데이트되지 않는다는 것을 인식하는 것이 중요합니다 순간적으로. 각 개별 서버 프로세스는 새로 전송됩니다 다른 것을 기다리기 직전에 수집가에 대한 액세스 계산 클라이언트 명령; 따라서 여전히 진행중인 쿼리는 영향을 미치지 않습니다 표시된 총계. 또한 수집가 자체는 새로운 것을 방출합니다 pgstat_stat_interval (500 밀리 초 기본적으로). 따라서 표시된 총계는 실제보다 뒤떨어집니다 활동.

또 다른 중요한 점은 서버 프로세스가 이러한 통계를 표시하도록 요청하면 먼저 가장 최근의 총계는 수집기 프로세스에 의해 방출되었습니다. 그럼 이 스냅 샷을 모든 통계적 뷰에 계속 사용하고 현재 거래가 끝날 때까지 기능합니다. 그래서 계속해서 통계는 변하지 않는 것으로 보입니다. 현재 거래. 이것은 버그가 아닌 기능입니다 통계에서 몇 가지 쿼리를 수행 할 수 있으며 숫자가 걱정되지 않고 결과를 상관시킵니다 당신 아래에서 변화합니다. 그러나 새로운 결과를보고 싶다면 각 쿼리마다 외부에서 쿼리를해야합니다. 거래 블록.

표 10-1. 표준 토토 베이보기

이름보기 설명
pg_stat_activity 서버 프로세스 당 1 행, 프로세스 PID 표시, 데이터베이스, 사용자 및 현재 쿼리. 현재 쿼리 칼럼은 슈퍼 사용자 만 사용할 수 있습니다. 다른 사람들에게는 널로 읽습니다. (수집가 때문에 보고 지연, 현재 쿼리는 최신입니다 장기 실행 쿼리를 위해.)
PG_STAT_DATABASE 데이터베이스 당 하나의 행, 활성 수를 보여줍니다 백엔드, 총 거래 및 총 거래 해당 데이터베이스로 돌아가서 총 디스크 블록은 읽습니다 총 버퍼 히트 수 (즉, 블록 읽기 요청 이미 버퍼에서 블록을 찾아서 피합니다 은닉처).
pg_stat_all_tables 현재 데이터베이스의 각 테이블에 대해 총 순차 및 인덱스 스캔의 수, 총 수 각 유형의 스캔에 의해 반환 된 튜플과 총계 튜플 삽입, 업데이트 및 삭제.
PG_STAT_SYS_TABLE 시스템 만 제외하고 PG_STAT_ALL_TABLES와 동일합니다 테이블이 표시됩니다.
pg_stat_user_tables PG_STAT_ALL_TABLES와 동일합니다 테이블이 표시됩니다.
PG_STAT_ALL_INDEXES 현재 데이터베이스의 각 인덱스에 대해 총계 해당 인덱스를 사용한 인덱스 스캔 횟수 인덱스 튜플의 수와 수의 수 성공적으로 힙 튜플을 가져옵니다 (이것은 언제 더 적을 수 있습니다 만료 된 힙을 가리키는 인덱스 항목이 있습니다 튜플).
PG_STAT_SYS_INDEXES PG_STAT_ALL_INDEXES와 동일합니다 시스템 테이블의 인덱스가 표시됩니다.
PG_STAT_USER_INDEXES PG_STAT_ALL_INDEXES와 동일합니다 사용자 테이블의 인덱스가 표시됩니다.
pg_statio_all_tables 현재 데이터베이스의 각 테이블에 대해 총계 해당 테이블에서 읽은 디스크 블록 수, 숫자 버퍼 히트, 디스크 블록의 수를 읽고 버퍼는 해당 테이블의 모든 인덱스에서 수많은 디스크 블록이 읽기 및 버퍼 히트에서 테이블의 보조 토스트 테이블 (있는 경우) 및 숫자 토스트의 디스크 블록 읽기 및 버퍼 히트 테이블의 색인.
PG_STATIO_SYS_TABLE PG_STATIO_ALL_TABLES와 동일합니다 시스템 테이블이 표시됩니다.
pg_statio_user_tables PG_STATIO_ALL_TABLES와 동일합니다 테이블이 표시됩니다.
pg_statio_all_indexes 현재 데이터베이스의 각 인덱스에 대해 숫자 해당 색인의 디스크 블록 읽기 및 버퍼 히트.
PG_STATIO_SYS_INDEXES PG_STATIO_ALL_INDEXES와 동일합니다 시스템 테이블의 인덱스가 표시됩니다.
PG_STATIO_USER_INDEXES PG_STATIO_ALL_INDEXES와 동일합니다 사용자 테이블의 인덱스가 표시됩니다.
PG_STATIO_ALL_SEATENCES 현재 데이터베이스의 각 시퀀스 객체에 대해, 디스크 블록의 수는 읽기 및 버퍼 히트입니다. 순서.
PG_STATIO_SYS_SEVESSENCES PG_STATIO_ALL_SEVESSENCES와 동일합니다 시스템 시퀀스가 ​​표시됩니다. (현재, 시스템 없음 시퀀스가 정의 되므로이보기는 항상입니다 비어 있는.)
PG_STATIO_USER_SEVERENCES PG_STATIO_ALL_SEVESSENCES와 동일합니다 사용자 시퀀스가 ​​표시됩니다.

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

thePG_STATIO_보기는입니다 버퍼의 효과를 결정하는 데 주로 유용합니다 은닉처. 실제 디스크 읽기 수가 훨씬 작을 때 버퍼 히트 수보다 캐시가 만족 스럽습니다. 커널 호출을 호출하지 않고 대부분의 요청을 읽습니다.

통계를 보는 다른 방법은 동일한 기본 통계 액세스를 사용하는 쿼리 작성 이러한 표준보기와 같은 기능. 다트베이스 별 액세스 함수는 데이터베이스 OID를 수락하여 어떤 데이터베이스를 보고서. 테이블 당 및 인덱스 별 함수는 테이블을 수락합니다 또는 색인 OID (현재의 테이블과 인덱스 만 데이터베이스는 이러한 기능으로 볼 수 있습니다). 백 커드 액세스 함수는 하나는 현재 활성 백엔드의 수에 이르고 있습니다.

표 10-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_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_blocks_fetched(OID) bigint 테이블에 대한 디스크 블록 페치 요청 수 색인
PG_STAT_GET_BLOCKS_HIT(OID) bigint 캐시에 발견 된 디스크 블록 요청 수 테이블 또는 색인
pg_stat_get_backend_idset() 정수 세트 현재 활성 백엔드 ID 세트 (1 ~ N 여기서 n은 활성 백엔드의 수)). 사용법을 참조하십시오 아래 예.
pg_stat_get_backend_pid(Integer) 정수 백엔드 프로세스의 PID
pg_stat_get_backend_dbid(Integer) OID 백엔드 프로세스의 데이터베이스 ID
pg_stat_get_backend_userid(Integer) OID 백엔드 프로세스의 사용자 ID
pg_stat_get_backend_activity(정수) 텍스트 백엔드 프로세스의 현재 쿼리 (발신자 인 경우 null 슈퍼업자가 아님)

참고 : blocks_fetched 마이너스 블록 _hit은 수를 제공합니다 테이블, 인덱스 또는 데이터베이스에 대해 발행 된 커널 read () 호출; 그러나 실제 물리적 읽기의 실제 수는 일반적으로 커널 수준 버퍼링.

함수pg_stat_get_backend_idset제공 a 각 활성 백엔드마다 하나의 행을 생성하는 편리한 방법. 을 위한 예를 들어, 모두의 PID 및 현재 쿼리를 표시하려면 백엔드 :

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