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

23.2. 윈 토토 수집기

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

23.2.1. 윈 토토 수집 구성

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

매개 변수stats_start_collector로 설정해야합니다true윈 토토 수집가가 전혀 출시 될 것입니다. 이것은 기본입니다 권장 설정이지만 없으면 꺼질 수 있습니다. 윈 토토에 대한 관심과 마지막 하락마다 짜내고 싶어 오버 헤드. (그러나 저축은 작을 것입니다.) 참고 서버가있는 동안이 옵션을 변경할 수 없습니다. 달리기.

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

참고 :매개 변수 이후stats_command_string, stats_block_levelstats_row_level기본값으로거짓, 통계는 거의 수집되지 않습니다 기본 구성. 이들 중 하나 이상을 활성화합니다 구성 변수는 다음을 크게 향상시킵니다 윈 토토 수집가가 생성 한 유용한 데이터의 양, 추가 런 타임 오버 헤드를 희생하여.

23.2.2. 수집 된 시청 윈 토토

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

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

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

표 23-1. 표준 윈 토토보기

보기 설명
pg_stat_activity 서버 당 1 행, 프로세스 표시id, 데이터베이스, 사용자, 현재 쿼리 및 현재 쿼리 시간 실행을 시작했습니다. 에 데이터를보고하는 열 현재 쿼리는 매개 변수 인 경우에만 사용할 수 있습니다stats_command_string켜졌다. 또한이 열은 NULL로 읽습니다 뷰를 검사하는 사용자가 슈퍼 사용자 또는 보고되는 프로세스를 소유 한 사용자와 동일 에. (수집가의보고로 인해 지연, 현재 쿼리는 최신의 경우에만 가능합니다 장기 실행 쿼리.)
PG_STAT_DATABASE 데이터베이스 당 1 행, 활성 수를 보여줍니다 백엔드 서버 프로세스, 총 거래 총 디스크의 총 디스크에서 총 롤백 블록 읽기 및 총 버퍼 히트 수 (즉,) 블록 읽기 요청은 블록을 찾아서 피합니다 이미 버퍼 캐시에).
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_TABLE 동일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_sequences 현재 데이터베이스의 각 시퀀스 객체에 대해, 디스크 블록의 수는 읽기 및 버퍼 히트입니다. 순서.
PG_STATIO_SYS_SEVESSENCES 동일pg_statio_all_sequences를 제외하고 시스템 시퀀스 만 표시됩니다. (현재, 시스템 없음 시퀀스가 정의 되므로이보기는 항상입니다 비어 있는.)
PG_STATIO_USER_SEVERENCES 동일PG_STATIO_ALL_SEATENCES를 제외하고 사용자 시퀀스 만 표시됩니다.

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

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

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

표 23-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에서 활성 백엔드 프로세스 수에). 사용법을 참조하십시오 텍스트의 예.
pg_backend_pid() 정수 첨부 된 백엔드 프로세스의 프로세스 ID 현재 세션
pg_stat_get_backend_pid(정수) Integer 주어진 백엔드 프로세스의 프로세스 ID
pg_stat_get_backend_dbid(Integer) OID 주어진 백엔드 프로세스의 데이터베이스 ID
pg_stat_get_backend_userid(정수) OID 주어진 백엔드 프로세스의 사용자 ID
​​pg_stat_get_backend_activity(정수) 텍스트 주어진 백엔드 프로세스의 활성 명령 (null 현재 사용자가 슈퍼 사용자가 아니거나 동일하지 않은 경우 쿼리중인 세션의 사용자 또는stats_command_string는 그렇지 않습니다 에)
pg_stat_get_backend_activity_start(정수) 시간대가있는 타임 스탬프 주어진 백엔드 프로세스가있는 시간 ' 현재 실행중인 쿼리가 시작되었습니다 (IF 인 경우 NULL 현재 사용자는 슈퍼업자가 아니고 같은 사용자 세션이 쿼리되는 세션의 경우, 또는stats_command_string켜져 있지 않음)
PG_STAT_RESET() 부울 현재 수집 된 모든 통계 재설정

참고 : pg_stat_get_db_blocks_fetched마이너스PG_STAT_GET_DB_BLOCKS_HIT커널 수를 제공read ()테이블, 색인에 대해 발행 된 통화, 또는 데이터베이스; 그러나 실제 물리적 읽기의 수는입니다 일반적으로 커널 수준 버퍼링으로 인해 낮습니다.

함수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;