2025년 9월 25일:토토 커뮤니티 : 토토
이 문서는 지원되지 않는 젠 토토 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.토토 사이트 순위 PostgreSQL : 문서 : 17 : 27.2. 누적 통계 시스템버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

26.2. 젠 토토 수집가

포스트그레SQL젠 토토 수집기은 다음을 지원하는 하위 시스템입니다. 서버 활동에 대한 정보 수집 및 보고. 현재 수집기는 테이블 및 인덱스에 대한 액세스를 계산할 수 있습니다. 디스크 블록 및 개별 행 측면에서 모두. 또한 전체를 추적합니다. 각 테이블의 행 수, 마지막 진공 및 분석 테이블마다 몇 번씩. 또한 사용자 정의 호출을 계산할 수도 있습니다. 기능과 각 기능에 소요된 총 시간.

포스트그레SQL또한 지원합니다 현재 다른 사람이 실행 중인 정확한 명령을 확인합니다. 서버 프로세스. 별도의 시설이 아닌 독립된 시설입니다. 수집기 프로세스에 따라 다릅니다.

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, 통계 결과를 표시하는 데 사용할 수 있습니다. 컬렉션입니다. 또는 다음을 사용하여 사용자 정의 보기를 작성할 수 있습니다. 기본 통계 함수.

통계를 사용하여 현재 활동을 모니터링하는 경우, 정보가 업데이트되지 않는다는 점을 인식하는 것이 중요합니다. 즉시. 각 개별 서버 프로세스는 새로운 정보를 전송합니다. 유휴 상태가 되기 직전에 수집기에 대한 통계 카운트; 그래서 아직 진행 중인 쿼리나 트랜잭션은 영향을 미치지 않습니다. 표시된 합계. 또한 수집기 자체가 새로운 보고서를 내보냅니다. 최대 한 번PGSTAT_STAT_INTERVAL밀리초(서버를 구축하는 동안 변경하지 않는 한 500). 그래서 표시된 정보는 실제 활동보다 뒤떨어집니다. 그러나, 현재 쿼리 정보는에서 수집됩니다.track_activities항상 최신 상태입니다.

또 다른 중요한 점은 서버 프로세스가 이러한 통계 중 하나를 표시하도록 요청하면 먼저 수집기 프로세스에서 생성된 가장 최근 보고서 모든 통계 보기에 이 스냅샷을 계속 사용하고 현재 트랜잭션이 끝날 때까지 작동합니다. 그래서 계속하는 한 통계는 변경되지 않는 것으로 나타납니다. 현재 거래. 마찬가지로, 모든 프로세스의 현재 쿼리는 그러한 경우 수집됩니다. 거래 내에서 정보가 먼저 요청되고, 거래 전반에 걸쳐 동일한 정보가 표시됩니다. 이는 버그가 아닌 기능입니다. 통계에 대한 여러 쿼리를 수행하고 결과를 상호 연관시킵니다. 당신 아래에 있는 숫자가 변하는 것을 걱정하지 마세요. 그러나 각 쿼리에 대해 새로운 결과를 보려면 다음을 수행하세요. 트랜잭션 블록 외부에서 쿼리를 수행합니다. 대안적으로, 당신은 호출할 수 있습니다pg_stat_clear_snapshot(), 삭제됩니다. 현재 트랜잭션의 통계 스냅샷(있는 경우) 는 다음번에 통계 정보를 사용하면 새 스냅샷이 생성됩니다. 가져올 수 있습니다.

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

보기 이름 설명
pg_stat_activity 서버 프로세스당 하나의 행, 데이터베이스 OID 표시, 데이터베이스 이름, 프로세스ID, 사용자 OID, 사용자 이름, 현재 쿼리, 쿼리 대기 상태, 쿼리가 실행되는 시간 현재 트랜잭션과 현재 쿼리가 실행을 시작했습니다. 프로세스가 시작된 시간과 클라이언트의 시간 주소와 포트 번호. 데이터를 보고하는 열 매개변수가 없으면 현재 쿼리에서 사용할 수 있습니다.track_activities이되었습니다 꺼졌습니다. 또한 이 열은 볼 수만 있습니다. 뷰를 검토하는 사용자가 슈퍼유저이거나 보고되는 프로세스를 소유한 사용자와 동일 에.
pg_stat_bgwriter 1개의 행만, 다음의 클러스터 전체 통계를 표시합니다. 백그라운드 작성자: 예정된 체크포인트 수, 요청된 체크포인트, 체크포인트에 의해 작성된 버퍼 청소 스캔 횟수와 백그라운드 작성자가 청소 스캔을 중지했습니다. 버퍼를 너무 많이 썼습니다. 통계도 포함됩니다 작성된 버퍼를 포함하여 공유 버퍼 풀에 대한 정보 백엔드(즉, 배경 작성자가 아님) 및 할당된 총 버퍼입니다.
pg_stat_database 데이터베이스당 하나의 행, 데이터베이스 OID 표시, 데이터베이스 이름, 활성 서버 프로세스 수 해당 데이터베이스에 연결된 트랜잭션 수 해당 데이터베이스에서 커밋 및 롤백됨, 총 디스크 블록 읽기, 총 버퍼 적중(예: 블록 읽기 버퍼에 이미 있는 블록을 찾아 요청을 방지합니다. 캐시), 반환, 가져오기, 삽입된 행 수, 업데이트 및 삭제되었습니다.
pg_stat_all_tables 현재 데이터베이스의 각 테이블(포함) TOAST 테이블), 테이블 OID, 스키마 및 테이블 이름, 시작된 순차 스캔 수, 라이브 수 순차 스캔으로 가져온 행, 인덱스 스캔 수 (테이블에 속한 모든 인덱스에 대해) 시작되었습니다. 인덱스 스캔으로 가져온 라이브 행 수, 행 삽입, 업데이트 및 삭제, 행 수 HOT 업데이트(즉, 별도의 인덱스 업데이트 없음) 라이브 및 데드 행 수, 마지막 테이블 마지막으로 진공 청소기로 청소했을 때 수동으로 청소했습니다. autovacuum 데몬, 마지막으로 분석되었을 때 수동으로, 그리고 마지막으로 분석되었을 때 자동 진공 데몬.
pg_stat_sys_tables 다음과 같음pg_stat_all_tables, 그 외에는 시스템 테이블이 표시됩니다.
pg_stat_user_tables 동일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 현재 데이터베이스의 각 테이블(포함) TOAST 테이블), 테이블 OID, 스키마 및 테이블 이름, 해당 테이블에서 읽은 디스크 블록 수, 버퍼 적중, 읽은 디스크 블록 수 및 버퍼 해당 테이블의 모든 인덱스 적중, 디스크 수 해당 테이블의 보조 테이블에서 읽기 및 버퍼 적중을 차단합니다. TOAST 테이블(있는 경우) 및 읽은 디스크 블록 수 TOAST 테이블의 인덱스에 대한 버퍼 적중.
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_sequences 현재 데이터베이스의 각 시퀀스 개체에 대해, 시퀀스 OID, 스키마 및 시퀀스 이름, 수 디스크 블록 읽기 및 버퍼 적중이 해당 순서로 이루어집니다.
pg_statio_sys_sequences 다음과 같음pg_statio_all_sequences, 그 외에는 시스템 시퀀스만 표시됩니다. (현재는 시스템이 없습니다. 시퀀스가 정의되어 있으므로 이 뷰는 항상 비어 있습니다.)
pg_statio_user_sequences 다음과 같습니다pg_statio_all_sequences, 그 외에는 사용자 시퀀스만 표시됩니다.
pg_stat_user_functions 추적된 모든 함수, 함수 OID, 스키마, 이름, 통화 횟수, 총 시간, 자체 시간. 자기 시간은 함수에 소요된 시간입니다. 자체적으로 총 시간에는 기능에 소요된 시간이 포함됩니다. 그것은 불렀다. 시간 값은 밀리초 단위입니다.

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

시작젠 토토8.1, 색인은 직접 또는 통해 사용할 수 있습니다."비트맵 스캔". 비트맵 스캔에서 출력 여러 인덱스는 AND 또는 OR 규칙을 통해 결합될 수 있습니다. 그렇죠 개별 힙 행 페치를 연결하기가 어렵습니다. 비트맵 스캔을 사용할 때 특정 인덱스. 그러므로 비트맵 스캔은 를 증가시킵니다.pg_stat_all_indexes.idx_tup_read인덱스에 대한 개수 사용하고 를 증가시킵니다.pg_stat_all_tables.idx_tup_fetch테이블에 포함되지만 영향을 미치지 않습니다pg_stat_all_indexes.idx_tup_fetch.

참고:이전젠 토토8.1, 그idx_tup_read그리고idx_tup_fetch카운트는 본질적으로 항상 평등합니다. 이제는 없어도 달라질 수 있어 비트맵 스캔을 고려하고 있기 때문입니다.idx_tup_read색인 항목 수를 계산합니다 동안 인덱스에서 검색됨idx_tup_fetch가져온 실시간 행 수를 계산합니다. 테이블에서; 후자는 죽거나 죽으면 더 적습니다. 아직 커밋되지 않은 행은 인덱스를 사용하여 가져옵니다.

pg_statio_조회수는 주로 버퍼의 효율성을 결정하는 데 유용합니다. 캐시. 실제 디스크 읽기 횟수가 훨씬 적은 경우 버퍼 적중 횟수보다 캐시가 만족스러운 것입니다. 커널 호출을 호출하지 않고 대부분의 읽기 요청을 수행합니다. 그러나, 이 젠 토토는 전체 이야기를 제공하지 않습니다. 어느 곳에서젠 토토처리 디스크 I/O, 데이터에 없는 데이터젠 토토버퍼 캐시가 아직 남아 있을 수 있습니다. 커널의 I/O 캐시에 있으므로 여전히 가져올 수 있습니다. 물리적으로 읽을 필요 없이. 관심있는 사용자 에 대한 더 자세한 정보를 얻는 중입니다.젠 토토I/O 동작을 사용하는 것이 좋습니다.젠 토토젠 토토 운영 체제 유틸리티와 결합된 수집기 커널의 I/O 처리에 대한 통찰력을 제공합니다.

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

표 26-2. 젠 토토 접근 기능

기능 반환 유형 설명
pg_stat_get_db_numbackends(oid) 정수 데이터베이스의 활성 서버 프로세스 수
pg_stat_get_db_xact_commit(oid) 비긴트 데이터베이스에서 커밋된 트랜잭션
pg_stat_get_db_xact_rollback(oid) bigint 데이터베이스에서 트랜잭션이 롤백되었습니다.
pg_stat_get_db_blocks_fetched(oid) 비긴트 다음에 대한 디스크 블록 가져오기 요청 수 데이터베이스
pg_stat_get_db_blocks_hit(oid) bigint 캐시에서 발견된 디스크 블록 가져오기 요청 수 데이터베이스용
pg_stat_get_db_tuples_returned(oid) 비긴트 데이터베이스에 대해 반환된 튜플 수
pg_stat_get_db_tuples_fetched(oid) 비긴트 데이터베이스에 대해 가져온 튜플 수
pg_stat_get_db_tuples_inserted(oid) 비긴트 데이터베이스에 삽입된 튜플 수
pg_stat_get_db_tuples_updated(oid) 비긴트 데이터베이스에서 업데이트된 튜플 수
pg_stat_get_db_tuples_deleted(oid) 비긴트 데이터베이스에서 삭제된 튜플 수
pg_stat_get_numscans(oid) 비긴트 인수가 다음인 경우 수행된 순차 스캔 수 인수가 다음과 같을 때 수행되는 테이블 또는 인덱스 스캔 수 색인
pg_stat_get_tuples_returned(oid) 비긴트 다음 경우에 순차 스캔으로 읽은 행 수 인수는 테이블이거나 인덱스 항목의 수입니다. 인수가 인덱스인 경우 반환됨
pg_stat_get_tuples_fetched(oid) bigint 다음의 경우 비트맵 스캔으로 가져온 테이블 행 수 인수는 테이블이거나 간단한 방법으로 가져온 테이블 행입니다. 인수가 다음인 경우 인덱스를 사용하여 인덱스 스캔 색인
pg_stat_get_tuples_inserted(oid) 비긴트 테이블에 삽입된 행 수
pg_stat_get_tuples_updated(oid) 비긴트 테이블에서 업데이트된 행 수(HOT 포함) 업데이트)
pg_stat_get_tuples_deleted(oid) bigint 테이블에서 삭제된 행 수
pg_stat_get_tuples_hot_updated(oid) bigint 테이블에서 HOT 업데이트된 행 수
pg_stat_get_live_tuples(oid) 비긴트 테이블의 라이브 행 수
pg_stat_get_dead_tuples(oid) 비긴트 테이블의 데드 행 수
pg_stat_get_blocks_fetched(oid) 비긴트 테이블 또는 테이블에 대한 디스크 블록 가져오기 요청 수 색인
pg_stat_get_blocks_hit(oid) 비긴트 다음에 대한 캐시에서 발견된 디스크 블록 요청 수 테이블 또는 인덱스
pg_stat_get_last_vacuum_time(oid) timestamptz 사용자가 시작한 마지막 진공 시간 이 테이블
pg_stat_get_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(정수) 레코드 집합 백엔드에 대한 정보 레코드를 반환합니다. 지정된 pid 또는 각 활성에 대한 하나의 레코드 다음과 같은 경우 시스템의 백엔드NULL지정되었습니다. 반환된 필드는 다음과 동일합니다.pg_stat_activity보기
pg_stat_get_function_calls(oid) 비긴트 함수가 호출된 횟수.
pg_stat_get_function_time(oid) 비긴트 함수에서 소요된 총 벽시계 시간, 마이크로초. 기능에 소요된 시간을 포함합니다. 이 사람이 불렀어.
pg_stat_get_function_self_time(oid) 비긴트 이 기능에만 소요된 시간입니다. 소요 시간 호출되는 함수는 제외됩니다.
pg_stat_get_backend_idset() 정수 집합 현재 활성 서버 프로세스 번호 세트 (1부터 활성 서버 프로세스 수까지). 참조 본문의 사용 예
pg_stat_get_backend_pid(정수) 정수 주어진 서버 프로세스의 프로세스 ID
pg_stat_get_backend_dbid(정수) oid 주어진 서버 프로세스의 데이터베이스 ID
pg_stat_get_backend_userid(정수) oid 해당 서버 프로세스의 사용자 ID
pg_stat_get_backend_activity(정수) 텍스트 주어진 서버 프로세스의 활성 명령이지만, 현재 사용자가 슈퍼유저이거나 동일한 사용자인 경우에만 사용자는 쿼리되는 세션의 사용자입니다. (그리고track_activities켜짐)
pg_stat_get_backend_waiting(정수) 부울 주어진 서버 프로세스가 다음을 기다리고 있으면 참입니다. 잠금. 단, 현재 사용자가 슈퍼유저이거나 쿼리되는 세션의 사용자와 동일한 사용자(그리고track_activities켜짐)
pg_stat_get_backend_activity_start(정수) 시간대가 포함된 타임스탬프 주어진 서버가 처리하는 시간' 현재 실행 중인 쿼리가 시작되었지만 현재 사용자는 슈퍼유저이거나 해당 사용자와 동일한 사용자입니다. 쿼리되는 세션(그리고track_activities켜짐)
pg_stat_get_backend_xact_start(정수) 시간대가 포함된 타임스탬프 주어진 서버가 처리하는 시간' 현재 실행 중인 트랜잭션이 시작되었지만 현재 사용자가 슈퍼유저이거나 동일한 사용자인 경우 쿼리되는 세션의 것(그리고track_activities켜짐)
pg_stat_get_backend_start(정수) 시간대가 포함된 타임스탬프 주어진 서버 프로세스가 실행된 시간 시작됨, 또는 현재 사용자가 수퍼유저가 아닌 경우 null 세션의 사용자와 동일한 사용자도 아닙니다. 쿼리
pg_stat_get_backend_client_addr(정수) inet 주어진 장치에 연결된 클라이언트의 IP 주소 서버 프로세스. 연결이 Unix를 통해 이루어지는 경우 Null 도메인 소켓. 현재 사용자가 아닌 경우에도 null입니다. 슈퍼유저 또는 세션의 사용자와 동일한 사용자 쿼리 중
pg_stat_get_backend_client_port(정수) 정수 에 연결된 클라이언트의 TCP 포트 번호 주어진 서버 프로세스. -1 연결이 다음을 초과하는 경우 Unix 도메인 소켓. 현재 사용자가 아닌 경우 Null 슈퍼유저 또는 세션의 사용자와 동일한 사용자 쿼리 중
pg_stat_get_bgwriter_timed_checkpoints() 비긴트 백그라운드 작가의 횟수 시간 제한이 있는 체크포인트를 시작했습니다(왜냐하면checkpoint_timeout시간이 지났습니다 만료됨)
pg_stat_get_bgwriter_requested_checkpoints() 비긴트 백그라운드 작가의 횟수 백엔드의 요청을 기반으로 체크포인트를 시작했습니다. 왜냐하면checkpoint_segments초과되었거나 왜냐하면체크포인트명령 발행되었습니다
pg_stat_get_bgwriter_buf_write_checkpoints() 비긴트 백그라운드에서 쓴 버퍼 수 체크포인트 중 작성자
pg_stat_get_bgwriter_buf_write_clean() 비긴트 백그라운드에서 쓴 버퍼 수 더러운 페이지를 정기적으로 청소하는 작가
pg_stat_get_bgwriter_maxwrite_clean() 비긴트 백그라운드 작가의 횟수 더 많이 썼기 때문에 청소 스캔을 중지했습니다. 에 지정된 것보다 버퍼가 더 많습니다.bgwriter_lru_maxpages매개변수
pg_stat_get_buf_write_backend() 비긴트 백엔드에 의해 작성된 버퍼 수는 다음과 같습니다. 새로운 버퍼를 할당해야 했습니다.
pg_stat_get_buf_alloc() 비긴트 총 버퍼 할당 수
pg_stat_clear_snapshot() 공허 현재 통계 스냅샷 삭제
pg_stat_reset() 무효 현재의 모든 통계 카운터를 재설정합니다. 데이터베이스를 0으로 설정(수퍼유저 권한 필요)

참고: pg_stat_get_blocks_fetched마이너스pg_stat_get_blocks_hit주다 커널 수읽기()테이블, 인덱스 또는 데이터베이스에 대해 실행된 호출; 숫자 실제 물리적 읽기의 비율은 일반적으로 다음과 같은 이유로 낮습니다. 커널 수준 버퍼링.*_blks_read통계 열은 이것을 사용합니다 빼기, 즉 가져온 마이너스 히트입니다.

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

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;