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

10.2. 토토 베이 수집기

PostgreSQL토토 베이 수집기는 다음을 지원하는 하위 시스템입니다. 서버 활동에 대한 정보 수집 및 보고. 현재 수집기는 테이블 및 인덱스에 대한 액세스를 계산할 수 있습니다. 디스크 블록 및 개별 행 측면에서 모두. 또한 지원합니다 현재 다른 사람이 실행 중인 정확한 쿼리를 확인합니다. 서버 프로세스.

10.2.1. 토토 베이수집 구성

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

변수STATS_START_COLLECTOR다음으로 설정되어야 함토토 베이 수집기의 경우 전혀 시작되지 않습니다. 이는 기본값이며 권장됩니다. 설정하지만 관심이 없으면 꺼질 수 있습니다. 통계를 바탕으로 오버헤드를 마지막 한 방울까지 모두 짜내려고 합니다. (단, 절감 효과는 작을 수 있습니다.) 서버 실행 중에는 옵션을 변경할 수 없습니다.

변수STATS_COMMAND_STRING, STATS_BLOCK_LEVELSTATS_ROW_LEVEL정보의 양을 제어 실제로 수집기로 전송되어 얼마나 많은지 결정합니다. 런타임 오버헤드가 발생합니다. 이들은 각각 다음 여부를 결정합니다. 서버 프로세스는 현재 명령 문자열을 보냅니다. 디스크 블록 수준 액세스 통계 및 행 수준 액세스 수집기에 대한 통계입니다. 일반적으로 이러한 변수는 설정됩니다. 에서postgresql.conf적용되도록 모든 서버 프로세스에 적용되지만 이를 켜거나 켜는 것은 가능합니다. 다음을 사용하여 개별 서버 프로세스에서 꺼집니다.SET명령. (일반 사용자의 접속을 방지하기 위해 관리자에게는 자신의 활동을 숨깁니다. 슈퍼유저만 볼 수 있습니다. 다음을 사용하여 이러한 변수를 변경할 수 있습니다.SET.)

중요:변수 이후STATS_COMMAND_STRING, STATS_BLOCK_LEVELSTATS_ROW_LEVEL기본값은거짓, 실제로 통계가 수집되지 않습니다. 기본 구성에서! 다음 중 하나 이상을 전환해야 합니다. 유용한 결과를 얻기 전에 통계 표시 기능.

10.2.2. 수집된 내용 보기 토토 베이

결과를 표시하기 위해 사전 정의된 여러 보기를 사용할 수 있습니다. 토토 베이 수집. 또는 사용자 정의를 구축할 수도 있습니다. 기본 토토 베이 함수를 사용하여 조회합니다.

통계를 사용하여 현재 활동을 모니터링하는 경우, 정보가 업데이트되지 않는다는 점을 인식하는 것이 중요합니다. 즉시. 각 개별 서버 프로세스는 새로운 정보를 전송합니다. 다른 것을 기다리기 직전에 수집기에 대한 액세스 횟수 클라이언트 명령; 따라서 아직 진행 중인 쿼리는 영향을 미치지 않습니다. 표시된 총계입니다. 또한 컬렉터 자체가 새로운 것을 방출합니다. PGSTAT_STAT_INTERVAL(500밀리초)당 최대 한 번 총계 기본적으로). 따라서 표시된 총계는 실제보다 지연됩니다. 활동.

또 다른 중요한 점은 서버 프로세스가 이러한 통계 중 하나를 표시하도록 요청하면 먼저 수집기 프로세스에서 내보낸 가장 최근 합계입니다. 그러면 모든 통계 보기에 이 스냅샷을 계속 사용하고 현재 트랜잭션이 끝날 때까지 작동합니다. 그래서 계속하는 한 통계는 변경되지 않는 것으로 나타납니다. 현재 거래. 이는 버그가 아닌 기능입니다. 이를 통해 통계에 대한 여러 쿼리를 수행할 수 있으며 숫자가 틀릴까 걱정하지 않고 결과를 연관시키세요. 당신 아래에서 변화합니다. 하지만 새로운 결과를 보고 싶다면 각 쿼리에 대해 쿼리는 외부에서 수행해야 합니다. 거래 차단.

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

보기 이름 설명
pg_stat_activity 서버 프로세스당 하나의 행, 프로세스 PID 표시, 데이터베이스, 사용자 및 현재 쿼리. 현재 쿼리 열은 슈퍼유저만 사용할 수 있습니다. 다른 사람들에게는 그것을 NULL로 읽습니다. (콜렉터의 특성상 보고 지연, 현재 쿼리는 최신 상태로만 업데이트됩니다. 장기 실행 쿼리의 경우.)
pg_stat_database 데이터베이스당 하나의 행, 활성 개수 표시 백엔드, 커밋된 총 트랜잭션 및 롤링된 총 트랜잭션 해당 데이터베이스로 돌아가서 읽은 총 디스크 블록 총 버퍼 히트 수(예: 블록 읽기 요청) 이미 버퍼에 있는 블록을 찾아 회피함 캐시).
pg_stat_all_tables 현재 데이터베이스의 각 테이블에 대해 총계 순차 및 인덱스 스캔 수, 총 스캔 수 각 스캔 유형에서 반환된 튜플 및 총계 튜플 삽입, 업데이트 및 삭제.
pg_stat_sys_tables 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 현재 데이터베이스의 각 테이블에 대한 총계 해당 테이블에서 읽은 디스크 블록 수 버퍼 히트 수, 읽은 디스크 블록 수 및 해당 테이블의 모든 인덱스에서 버퍼 적중이 발생하면 읽은 디스크 블록 수 및 버퍼 적중 수 테이블의 보조 TOAST 테이블(있는 경우) 및 숫자 TOAST에 대한 디스크 블록 읽기 및 버퍼 적중 수 테이블의 인덱스입니다.
pg_statio_sys_tables 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_sequences 현재 데이터베이스의 각 시퀀스 개체에 대해, 읽은 디스크 블록 수와 버퍼 적중 수 순서.
pg_statio_sys_sequences pg_statio_all_sequences와 동일하지만 다음 사항만 제외됩니다. 시스템 순서가 표시됩니다. (현재는 시스템이 없습니다. 시퀀스가 정의되어 있으므로 이 뷰는 항상 비어 있습니다.)
pg_statio_user_sequences pg_statio_all_sequences와 동일하지만 다음 사항만 제외됩니다. 사용자 시퀀스가 표시됩니다.

색인별 통계는 특히 다음과 같은 경우에 유용합니다. 어떤 인덱스가 사용되고 있는지, 얼마나 효과적인지 확인 입니다.

pg_statio_조회수는 주로 버퍼의 효율성을 결정하는 데 유용합니다. 캐시. 실제 디스크 읽기 횟수가 훨씬 적은 경우 버퍼 적중 횟수보다 캐시가 만족스러운 것입니다. 커널 호출을 호출하지 않고 대부분의 읽기 요청을 수행합니다.

통계를 보는 다른 방법은 다음과 같이 설정할 수 있습니다. 동일한 기본 통계 액세스를 사용하는 쿼리 작성 이러한 표준 보기와 같은 기능을 합니다. 데이터베이스별 액세스 함수는 데이터베이스 OID를 받아 어떤 데이터베이스를 식별할지 식별합니다. 보고하다. 테이블별 및 인덱스별 함수는 테이블을 허용합니다. 또는 인덱스 OID(현재 테이블과 인덱스만 데이터베이스는 이러한 기능으로 볼 수 있습니다). 백엔드별 액세스 기능은 다음 범위의 백엔드 ID 번호를 허용합니다. 1은 현재 활성 백엔드 수입니다.

표 10-2. 토토 베이 접근 기능

기능 반환 유형 설명
pg_stat_get_db_numbackends(oid) 정수 데이터베이스의 활성 백엔드 수
pg_stat_get_db_xact_commit(oid) bigint 데이터베이스에서 커밋된 트랜잭션
pg_stat_get_db_xact_rollback(oid) 비긴트 데이터베이스에서 트랜잭션이 롤백되었습니다.
pg_stat_get_db_blocks_fetched(oid) 비긴트 다음에 대한 디스크 블록 가져오기 요청 수 데이터베이스
pg_stat_get_db_blocks_hit(oid) 비긴트 다음에 대한 캐시에서 발견된 디스크 블록 요청 수 데이터베이스
pg_stat_get_numscans(oid) 비긴트 인수가 다음인 경우 수행된 순차 스캔 수 인수가 다음과 같을 때 수행되는 테이블 또는 인덱스 스캔 수 색인
pg_stat_get_tuples_returned(oid) 비긴트 다음 경우에 순차 스캔으로 읽은 튜플 수 인수는 테이블이거나 읽은 인덱스 튜플의 수입니다. 인수가 인덱스인 경우
pg_stat_get_tuples_fetched(oid) 비긴트 다음에서 가져온 유효한(만료되지 않은) 테이블 튜플 수 인수가 테이블이거나 가져온 경우 순차적 스캔 인수가 다음인 경우 이 인덱스를 사용하여 인덱스 스캔으로 색인
pg_stat_get_tuples_inserted(oid) 비긴트 테이블에 삽입된 튜플 수
pg_stat_get_tuples_updated(oid) 비긴트 테이블에서 업데이트된 튜플 수
pg_stat_get_tuples_deleted(oid) 비긴트 테이블에서 삭제된 튜플 수
pg_stat_get_blocks_fetched(oid) bigint 테이블 또는 테이블에 대한 디스크 블록 가져오기 요청 수 색인
pg_stat_get_blocks_hit(oid) 비긴트 다음에 대한 캐시에서 발견된 디스크 블록 요청 수 테이블 또는 인덱스
pg_stat_get_backend_idset() 정수 집합 현재 활성화된 백엔드 ID 집합(1부터 N까지) 여기서 N은 활성 백엔드 수입니다. 사용법 보기 아래 예를 참조하세요.
pg_stat_get_backend_pid(정수) 정수 백엔드 프로세스의 PID
pg_stat_get_backend_dbid(정수) oid 백엔드 프로세스의 데이터베이스 ID
pg_stat_get_backend_userid(정수) oid 백엔드 프로세스의 사용자 ID
pg_stat_get_backend_activity(정수) 텍스트 백엔드 프로세스의 현재 쿼리(호출자가 다음인 경우 NULL) 슈퍼유저 아님)

참고: block_fetched에서 block_hit를 뺀 값은 다음의 수를 나타냅니다. 테이블, 인덱스 또는 데이터베이스에 대해 실행된 커널 read() 호출. 하지만 실제 물리적 읽기 수는 일반적으로 다음과 같은 이유로 더 낮습니다. 커널 수준 버퍼링.

함수pg_stat_get_backend_idset제공 각 활성 백엔드에 대해 하나의 행을 생성하는 편리한 방법입니다. 에 대한 예를 들어 모든 항목의 PID와 현재 쿼리를 표시합니다. 백엔드:

SELECT pg_stat_get_backend_pid(S.backendid) AS procpid,
       pg_stat_get_backend_activity(S.backendid) AS current_query
FROM (SELECT pg_stat_get_backend_idset() AS 백엔드) AS S;