| 윈 토토 : 문서 : 9.4 : 윈 토토 | |||
|---|---|---|---|
| 토토 결과 PostgreSQL : 문서 : 9.4 : 표준 유닉스 도구 | PostgreSQL : 문서 : 9.4 : 데이터베이스 활동 토토 베이 | 27장. 데이터베이스 활동 모니터링 | PostgreSQL : 문서 : 9.4 : 무지개 토토보기 |
PostgreSQL's롤 토토 수집기은 서버 활동에 대한 정보 수집 및 보고를 지원하는 하위 시스템입니다. 현재 수집기는 디스크 블록 및 개별 행 용어 모두에서 테이블 및 인덱스에 대한 액세스를 계산할 수 있습니다. 또한 각 테이블의 총 행 수와 각 테이블의 Vacuum 및 분석 작업에 대한 정보를 추적합니다. 또한 사용자 정의 함수에 대한 호출과 각 함수에 소요된 총 시간을 계산할 수도 있습니다.
포스트그레SQL또한 현재 다른 서버 프로세스에서 실행 중인 정확한 명령에 대한 보고를 지원합니다. 이 기능은 수집기 프로세스와 독립적입니다.
통계 수집은 쿼리 실행에 약간의 오버헤드를 추가하므로 정보를 수집하거나 수집하지 않도록 시스템을 구성할 수 있습니다. 이는 일반적으로 다음에서 설정되는 구성 매개변수에 의해 제어됩니다.postgresql.conf. (보다롤 토토 : 문서 : 9.4 : 서버 구성구성 매개변수 설정에 대한 자세한 내용은.)
매개변수track_activities모든 서버 프로세스에서 실행 중인 현재 명령을 모니터링할 수 있습니다.
매개변수track_counts테이블 및 인덱스 액세스에 대한 롤 토토 수집 여부를 제어합니다.
매개변수트랙_기능사용자 정의 함수의 사용을 추적할 수 있습니다.
매개변수track_io_timing블록 읽기 및 쓰기 시간 모니터링을 활성화합니다.
일반적으로 이러한 매개변수는 다음에서 설정됩니다.postgresql.conf모든 서버 프로세스에 적용되지만 다음을 사용하여 개별 세션에서 켜거나 끌 수 있습니다.PostgreSQL : 문서 : 9.4 : 토토 꽁 머니명령. (일반 사용자가 관리자에게 자신의 활동을 숨기는 것을 방지하기 위해 슈퍼유저만 이 매개변수를 변경할 수 있습니다.SET.)
롤 토토 수집기는 수집된 정보를 다른 사람에게 전송합니다.포스트그레SQL임시 파일을 통해 처리합니다. 이 파일은 다음과 같은 디렉토리에 저장됩니다.stats_temp_directory매개변수,pg_stat_tmp기본적으로. 더 나은 성능을 위해,stats_temp_directoryRAM 기반 파일 시스템을 가리킬 수 있어 물리적 I/O 요구 사항이 줄어듭니다. 서버가 완전히 종료되면 통계 데이터의 영구 복사본이 다음 위치에 저장됩니다.pg_stat하위 디렉토리. 서버를 다시 시작해도 롤 토토가 유지될 수 있습니다. 서버 시작 시 복구가 수행되면(예: 즉시 종료, 서버 충돌 및 특정 시점 복구 후) 모든 롤 토토 카운터가 재설정됩니다.
다음에 나열된 사전 정의된 여러 보기표 27-1, 통계 수집 결과를 표시하는 데 사용할 수 있습니다. 또는 다음에서 설명한 대로 기본 통계 함수를 사용하여 사용자 정의 보기를 구축할 수 있습니다.섹션 27.2.3.
통계를 사용하여 현재 활동을 모니터링할 때 정보가 즉시 업데이트되지 않는다는 점을 인식하는 것이 중요합니다. 각 개별 서버 프로세스는 유휴 상태가 되기 직전에 새로운 통계 개수를 수집기에 전송합니다. 따라서 아직 진행 중인 쿼리나 트랜잭션은 표시된 총계에 영향을 주지 않습니다. 또한 수집기 자체는 최대 한 번만 새 보고서를 내보냅니다.PGSTAT_STAT_INTERVAL밀리초(서버를 구축하는 동안 변경하지 않는 한 500ms). 따라서 표시된 정보는 실제 활동보다 뒤떨어집니다. 그러나 현재 쿼리 정보는track_activities항상 최신 상태입니다.
또 다른 중요한 점은 서버 프로세스에 이러한 통계를 표시하도록 요청하면 먼저 수집기 프로세스에서 내보낸 가장 최근 보고서를 가져온 다음 현재 트랜잭션이 끝날 때까지 모든 통계 보기 및 기능에 대해 이 스냅샷을 계속 사용한다는 것입니다. 따라서 현재 트랜잭션을 계속하는 한 통계에는 정적 정보가 표시됩니다. 마찬가지로, 모든 세션의 현재 쿼리에 대한 정보는 해당 정보가 트랜잭션 내에서 처음 요청될 때 수집되며 동일한 정보가 트랜잭션 전체에 표시됩니다. 이는 버그가 아닌 기능입니다. 이를 통해 통계에 대한 여러 쿼리를 수행하고 숫자가 변경되는 것을 걱정하지 않고 결과를 상호 연관시킬 수 있기 때문입니다. 그러나 각 쿼리에서 새로운 결과를 보려면 트랜잭션 블록 외부에서 쿼리를 수행해야 합니다. 또는 호출할 수 있습니다.pg_stat_clear_snapshot(), 현재 트랜잭션의 통계 스냅샷(있는 경우)을 삭제합니다. 다음에 통계 정보를 사용하면 새 스냅샷을 가져오게 됩니다.
트랜잭션은 보기에서 자체 롤 토토(아직 수집기로 전송되지 않은 상태)를 볼 수도 있습니다.pg_stat_xact_all_tables, pg_stat_xact_sys_tables, pg_stat_xact_user_tables및pg_stat_xact_user_functions. 이 숫자는 위에서 설명한 대로 작동하지 않습니다. 대신 거래 전반에 걸쳐 지속적으로 업데이트됩니다.
표 27-1. 표준 통계 보기
| 보기 이름 | 설명 |
|---|---|
| pg_stat_activity | 서버 프로세스당 하나의 행으로, 상태 및 현재 쿼리 등 해당 프로세스의 현재 활동과 관련된 정보를 표시합니다. 보다pg_stat_activity자세한 내용은. |
| pg_stat_archiver | WAL 아카이버 프로세스 활동에 대한 롤 토토를 표시하는 하나의 행만 있습니다. 보다pg_stat_archiver자세한 내용은. |
| pg_stat_bgwriter | 백그라운드 작성기 프로세스 활동에 대한 롤 토토를 표시하는 한 행만. 보다pg_stat_bgwriter자세한 내용은. |
| pg_stat_database | 데이터베이스당 하나의 행, 데이터베이스 전체 롤 토토를 표시합니다. 보다pg_stat_database자세한 내용은. |
| pg_stat_all_tables | 현재 데이터베이스의 각 테이블에 대한 행이 하나씩 있으며 해당 특정 테이블에 대한 액세스에 대한 통계를 표시합니다. 보다pg_stat_all_tables자세한 내용은. |
| pg_stat_sys_tables | 동일pg_stat_all_tables, 시스템 테이블만 표시된다는 점만 제외. |
| pg_stat_user_tables | 다음과 동일pg_stat_all_tables, 사용자 테이블만 표시된다는 점만 제외. |
| pg_stat_xact_all_tables | 비슷함pg_stat_all_tables, 그러나 현재 트랜잭션 내에서 지금까지 수행된 작업을 계산합니다(아님아직 포함됨pg_stat_all_tables및 관련 보기). 라이브 및 데드 행 수와 진공 및 분석 작업에 대한 열은 이 뷰에 없습니다. |
| pg_stat_xact_sys_tables | 동일pg_stat_xact_all_tables, 시스템 테이블만 표시된다는 점만 제외. |
| pg_stat_xact_user_tables | 동일pg_stat_xact_all_tables, 사용자 테이블만 표시된다는 점만 제외. |
| pg_stat_all_indexes | 현재 데이터베이스의 각 인덱스에 대한 행이 하나씩 있으며 해당 특정 인덱스에 대한 액세스에 대한 통계를 표시합니다. 보다pg_stat_all_indexes자세한 내용은. |
| pg_stat_sys_indexes | 다음과 같음pg_stat_all_indexes, 단, 시스템 테이블의 인덱스만 표시됩니다. |
| pg_stat_user_indexes | 다음과 같음pg_stat_all_indexes, 단, 사용자 테이블의 인덱스만 표시됩니다. |
| pg_statio_all_tables | 현재 데이터베이스의 각 테이블에 대한 행이 하나씩 있으며 해당 특정 테이블의 I/O에 대한 통계를 표시합니다. 보다pg_statio_all_tables자세한 내용은. |
| pg_statio_sys_tables | 동일pg_statio_all_tables, 단, 시스템 테이블만 표시됩니다. |
| pg_statio_user_tables | 동일함pg_statio_all_tables, 단, 사용자 테이블만 표시됩니다. |
| pg_statio_all_indexes | 현재 데이터베이스의 각 인덱스에 대한 행이 하나씩 있으며 해당 특정 인덱스의 I/O에 대한 통계를 표시합니다. 보다pg_statio_all_indexes자세한 내용은. |
| pg_statio_sys_indexes | 다음과 같습니다pg_statio_all_indexes, 단, 시스템 테이블의 인덱스만 표시됩니다. |
| pg_statio_user_indexes | 다음과 같음pg_statio_all_indexes, 단, 사용자 테이블의 인덱스만 표시됩니다. |
| pg_statio_all_sequences | 현재 데이터베이스의 각 시퀀스에 대해 하나의 행이 있으며 해당 특정 시퀀스의 I/O에 대한 통계를 표시합니다. 보다pg_statio_all_sequences자세한 내용은. |
| pg_statio_sys_sequences | 다음과 같음pg_statio_all_sequences, 단, 시스템 시퀀스만 표시됩니다. (현재 시스템 시퀀스가 정의되어 있지 않으므로 이 보기는 항상 비어 있습니다.) |
| pg_statio_user_sequences | 동일함pg_statio_all_sequences, 단, 사용자 시퀀스만 표시됩니다. |
| pg_stat_user_functions | 추적된 각 함수에 대한 행이 하나씩 있으며 해당 함수 실행에 대한 롤 토토를 표시합니다. 보다pg_stat_user_functions자세한 내용은. |
| pg_stat_xact_user_functions | 비슷함pg_stat_user_functions, 그러나 현재 트랜잭션 중 호출만 계산합니다(아님아직 포함됨pg_stat_user_functions). |
| pg_stat_replication | WAL 발신자 프로세스당 하나의 행으로 해당 발신자의 연결된 대기 서버에 대한 복제에 대한 롤 토토를 표시합니다. 보다pg_stat_replication자세한 내용은. |
| pg_stat_database_contributes | 데이터베이스당 하나의 행, 대기 서버의 복구 충돌로 인한 쿼리 취소에 대한 데이터베이스 전체 롤 토토를 표시합니다. 보다pg_stat_database_contributes자세한 내용은. |
인덱스별 롤 토토는 어떤 인덱스가 사용되고 있는지, 얼마나 효과적인지 확인하는 데 특히 유용합니다.
그pg_statio_뷰는 주로 버퍼 캐시의 효율성을 확인하는 데 유용합니다. 실제 디스크 읽기 수가 버퍼 적중 수보다 훨씬 적으면 캐시는 커널 호출을 호출하지 않고도 대부분의 읽기 요청을 충족합니다. 그러나 이러한 롤 토토는 전체 내용을 제공하지 않습니다.PostgreSQL디스크 I/O, 다음에 없는 데이터를 처리합니다.PostgreSQL버퍼 캐시는 여전히 커널의 I/O 캐시에 있을 수 있으므로 물리적 읽기 없이도 계속 가져올 수 있습니다. 다음에 대한 자세한 정보를 얻는 데 관심이 있는 사용자PostgreSQLI/O 동작은 다음을 사용하는 것이 좋습니다.포스트그레SQL커널의 I/O 처리에 대한 통찰력을 제공하는 운영 체제 유틸리티와 결합된 롤 토토 수집기.
표 27-2.pg_stat_activity보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 데이트 | oid | 이 백엔드가 연결된 데이터베이스의 OID |
| 데이터이름 | 이름 | 이 백엔드가 연결된 데이터베이스의 이름 |
| pid | 정수 | 이 백엔드의 프로세스 ID |
| usesysid | oid | 이 백엔드에 로그인한 사용자의 OID |
| 사용자 이름 | 이름 | 이 백엔드에 로그인한 사용자의 이름 |
| 응용프로그램_이름 | 텍스트 | 이 백엔드에 연결된 애플리케이션의 이름 |
| 클라이언트_주소 | inet | 이 백엔드에 연결된 클라이언트의 IP 주소입니다. 이 필드가 null이면 클라이언트가 서버 시스템의 Unix 소켓을 통해 연결되었거나 이것이 autovacuum과 같은 내부 프로세스임을 나타냅니다. |
| 클라이언트_호스트 이름 | 텍스트 | 다음의 역방향 DNS 조회로 보고된 연결된 클라이언트의 호스트 이름클라이언트_주소. 이 필드는 IP 연결에 대해서만 null이 아니며, 다음 경우에만 해당됩니다.로그_호스트 이름활성화되었습니다. |
| 클라이언트_포트 | 정수 | 클라이언트가 이 백엔드와의 통신에 사용하는 TCP 포트 번호 또는-1Unix 소켓을 사용하는 경우 |
| backend_start | 시간대가 포함된 타임스탬프 | 이 프로세스가 시작된 시간, 즉 클라이언트가 서버에 연결된 시간 |
| xact_start | 시간대가 포함된 타임스탬프 | 이 프로세스의 현재 트랜잭션이 시작된 시간. 활성 트랜잭션이 없으면 null입니다. 현재 쿼리가 해당 트랜잭션의 첫 번째 쿼리인 경우 이 열은query_start열. |
| query_start | 시간대가 포함된 타임스탬프 | 현재 활성 쿼리가 시작된 시간 또는 다음과 같은 경우상태아닙니다활성, 마지막 쿼리가 시작된 시간 |
| 상태_변경 | 시간대가 포함된 타임스탬프 | 때상태마지막으로 변경되었습니다 |
| 대기 중 | 부울 | 이 백엔드가 현재 잠금을 기다리고 있는 경우 true |
| 상태 | 텍스트 | 이 백엔드의 현재 전반적인 상태. 가능한 값은 다음과 같습니다:
|
| backend_xid | xid | 이 백엔드의 최상위 트랜잭션 식별자(있는 경우). |
| backend_xmin | xid | 현재 백엔드의xmin수평선. |
| 질의 | 텍스트 | 이 백엔드의 가장 최근 쿼리 텍스트. 만약에상태is활성이 필드는 현재 실행 중인 쿼리를 표시합니다. 다른 모든 상태에서는 마지막으로 실행된 쿼리가 표시됩니다. |
그pg_stat_activity뷰에는 서버 프로세스당 하나의 행이 있으며 해당 프로세스의 현재 활동과 관련된 정보를 표시합니다.
참고:그대기 중그리고상태열은 독립적입니다. 백엔드가활성상태, 그럴 수도 있고 아닐 수도 있음대기 중. 상태인 경우활성그리고대기 중참입니다. 이는 쿼리가 실행되고 있지만 시스템 어딘가의 잠금으로 인해 차단되고 있음을 의미합니다.
표 27-3.pg_stat_archiver보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| archived_count | 비긴트 | 성공적으로 아카이브된 WAL 파일 수 |
| last_archived_wal | 텍스트 | 성공적으로 아카이브된 마지막 WAL 파일의 이름 |
| last_archived_time | 시간대가 포함된 타임스탬프 | 마지막으로 성공한 아카이브 작업 시간 |
| failed_count | 비긴트 | WAL 파일 아카이브 시도 실패 횟수 |
| last_failed_wal | 텍스트 | 마지막으로 실패한 아카이브 작업의 WAL 파일 이름 |
| last_failed_time | 시간대가 포함된 타임스탬프 | 마지막으로 실패한 아카이브 작업 시간 |
| stats_reset | 시간대가 포함된 타임스탬프 | 이 롤 토토가 마지막으로 재설정된 시간 |
그pg_stat_archiver뷰에는 항상 클러스터의 아카이버 프로세스에 대한 데이터가 포함된 단일 행이 있습니다.
표 27-4.pg_stat_bgwriter보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| checkpoints_timed | bigint | 수행된 예정된 체크포인트 수 |
| checkpoints_req | 비긴트 | 요청된 수행된 체크포인트 수 |
| checkpoint_write_time | 배정밀도 | 파일이 디스크에 기록되는 체크포인트 처리 부분에 소요된 총 시간(밀리초) |
| checkpoint_sync_time | 배정밀도 | 파일이 디스크에 동기화되는 체크포인트 처리 부분에 소비된 총 시간(밀리초) |
| buffers_checkpoint | 비긴트 | 체크포인트 동안 작성된 버퍼 수 |
| buffers_clean | bigint | 백그라운드 작성자가 쓴 버퍼 수 |
| maxwrite_clean | 비긴트 | 너무 많은 버퍼를 기록했기 때문에 백그라운드 작성자가 정리 스캔을 중지한 횟수 |
| buffers_backend | 비긴트 | 백엔드에서 직접 작성한 버퍼 수 |
| buffers_backend_fsync | bigint | 백엔드가 자체적으로 실행해야 했던 횟수fsync호출(일반적으로 백엔드가 자체 쓰기를 수행하는 경우에도 백그라운드 작성자가 이를 처리합니다) |
| buffers_alloc | bigint | 할당된 버퍼 수 |
| stats_reset | 시간대가 포함된 타임스탬프 | 이 롤 토토가 마지막으로 재설정된 시간 |
그pg_stat_bgwriter뷰에는 항상 클러스터에 대한 전역 데이터가 포함된 단일 행이 있습니다.
표 27-5.pg_stat_database보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 데이트 | oid | 데이터베이스의 OID |
| 데이터이름 | 이름 | 이 데이터베이스의 이름 |
| 백엔드 수 | 정수 | 현재 이 데이터베이스에 연결된 백엔드 수. 이는 현재 상태를 반영하는 값을 반환하는 이 보기의 유일한 열입니다. 다른 모든 열은 마지막 재설정 이후 누적된 값을 반환합니다. |
| xact_commit | 비긴트 | 이 데이터베이스에서 커밋된 트랜잭션 수 |
| xact_rollback | 비긴트 | 롤백된 이 데이터베이스의 트랜잭션 수 |
| blks_read | bigint | 이 데이터베이스에서 읽은 디스크 블록 수 |
| blks_hit | 비긴트 | 디스크 블록이 이미 버퍼 캐시에서 발견되어 읽기가 필요하지 않은 횟수(여기에는 운영 체제의 파일 시스템 캐시가 아닌 PostgreSQL 버퍼 캐시의 적중만 포함됨) |
| tup_returned | bigint | 이 데이터베이스의 쿼리에 의해 반환된 행 수 |
| tup_fetched | 비긴트 | 이 데이터베이스의 쿼리로 가져온 행 수 |
| tup_inserted | 비긴트 | 이 데이터베이스의 쿼리에 의해 삽입된 행 수 |
| tup_updated | 비긴트 | 이 데이터베이스의 쿼리에 의해 업데이트된 행 수 |
| tup_deleted | 비긴트 | 이 데이터베이스의 쿼리에 의해 삭제된 행 수 |
| 충돌 | bigint | 이 데이터베이스의 복구 충돌로 인해 취소된 쿼리 수. (충돌은 대기 서버에서만 발생합니다. 참조pg_stat_database_conferences자세한 내용은.) |
| temp_files | 비긴트 | 이 데이터베이스의 쿼리로 생성된 임시 파일 수. 임시 파일이 생성된 이유(예: 정렬 또는 해싱)와 관계없이 모든 임시 파일이 계산됩니다.log_temp_files설정. |
| temp_bytes | 비긴트 | 이 데이터베이스의 쿼리에 의해 임시 파일에 기록된 총 데이터 양입니다. 임시 파일이 생성된 이유와 관계없이 모든 임시 파일이 계산됩니다.log_temp_files설정. |
| 교착상태 | 비긴트 | 이 데이터베이스에서 감지된 교착 상태 수 |
| blk_read_time | 배정밀도 | 이 데이터베이스의 백엔드가 데이터 파일 블록을 읽는 데 소요된 시간(밀리초) |
| blk_write_time | 배정밀도 | 이 데이터베이스의 백엔드가 데이터 파일 블록을 쓰는 데 소요된 시간(밀리초) |
| stats_reset | 시간대가 포함된 타임스탬프 | 이 롤 토토가 마지막으로 재설정된 시간 |
그pg_stat_database뷰에는 클러스터의 각 데이터베이스에 대해 하나의 행이 포함되어 데이터베이스 전체 롤 토토를 표시합니다.
표 27-6.pg_stat_all_tables보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 렐리드 | oid | 테이블의 OID |
| 스키마 이름 | 이름 | 이 테이블이 있는 스키마의 이름 |
| relname | 이름 | 이 테이블의 이름 |
| seq_scan | 비긴트 | 이 테이블에서 시작된 순차 스캔 수 |
| seq_tup_read | 비긴트 | 순차 스캔으로 가져온 라이브 행 수 |
| idx_scan | 비긴트 | 이 테이블에서 시작된 인덱스 스캔 수 |
| idx_tup_fetch | 비긴트 | 인덱스 스캔으로 가져온 라이브 행 수 |
| n_tup_ins | 비긴트 | 삽입된 행 수 |
| n_tup_upd | 비긴트 | 업데이트된 행 수 |
| n_tup_del | 비긴트 | 삭제된 행 수 |
| n_tup_hot_upd | 비긴트 | 핫 업데이트된 행 수(즉, 별도의 색인 업데이트가 필요하지 않음) |
| n_live_tup | 비긴트 | 추정된 라이브 행 수 |
| n_dead_tup | 비긴트 | 예상된 데드 행 수 |
| n_mod_since_analyze | 비긴트 | 이 테이블이 마지막으로 분석된 이후 수정된 예상 행 수 |
| last_vacuum | 시간대가 포함된 타임스탬프 | 이 테이블을 수동으로 정리한 마지막 시간(계산되지 않음진공이 가득 참) |
| last_autovacuum | 시간대가 포함된 타임스탬프 | 이 테이블이 autovacuum 데몬에 의해 마지막으로 비워진 시간 |
| last_analyze | 시간대가 포함된 타임스탬프 | 이 테이블을 수동으로 분석한 마지막 시간 |
| last_autoanalyze | 시간대가 포함된 타임스탬프 | 이 테이블이 autovacuum 데몬에 의해 마지막으로 분석된 시간 |
| vacuum_count | 비진트 | 이 테이블을 수동으로 비운 횟수(계산되지 않음진공 가득 참) |
| autovacuum_count | 비긴트 | autovacuum 데몬에 의해 이 테이블이 비워진 횟수 |
| analyze_count | 비긴트 | 이 테이블이 수동으로 분석된 횟수 |
| autoanalyze_count | 비긴트 | autovacuum 데몬이 이 테이블을 분석한 횟수 |
그pg_stat_all_tables뷰에는 현재 데이터베이스(TOAST 테이블 포함)의 각 테이블에 대해 하나의 행이 포함되어 해당 특정 테이블에 대한 액세스에 대한 통계를 표시합니다. 그만큼pg_stat_user_tables그리고pg_stat_sys_tables뷰에는 동일한 정보가 포함되어 있지만 각각 사용자 테이블과 시스템 테이블만 표시하도록 필터링되었습니다.
표 27-7.pg_stat_all_indexes보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 렐리드 | oid | 이 인덱스에 대한 테이블의 OID |
| indexrelid | oid | 이 색인의 OID |
| 스키마 이름 | 이름 | 이 색인이 있는 스키마의 이름 |
| relname | 이름 | 이 색인에 대한 테이블 이름 |
| indexrelname | 이름 | 이 색인의 이름 |
| idx_scan | 비긴트 | 이 인덱스에서 시작된 인덱스 스캔 수 |
| idx_tup_read | 비긴트 | 이 인덱스에 대한 스캔으로 반환된 인덱스 항목 수 |
| idx_tup_fetch | 비긴트 | 이 인덱스를 사용하여 단순 인덱스 스캔으로 가져온 라이브 테이블 행 수 |
그pg_stat_all_indexes뷰에는 현재 데이터베이스의 각 인덱스에 대해 하나의 행이 포함되어 해당 특정 인덱스에 대한 액세스에 대한 통계를 표시합니다. 그만큼pg_stat_user_indexes그리고pg_stat_sys_indexes뷰에는 동일한 정보가 포함되어 있지만 각각 사용자 및 시스템 색인만 표시하도록 필터링되었습니다.
색인은 간단한 색인 스캔을 통해 사용할 수 있습니다."비트맵"색인 스캔. 비트맵 스캔에서는 여러 인덱스의 출력이 AND 또는 OR 규칙을 통해 결합될 수 있으므로 비트맵 스캔을 사용할 때 개별 힙 행 페치를 특정 인덱스와 연결하기가 어렵습니다. 따라서 비트맵 스캔은pg_stat_all_indexes.idx_tup_read사용하는 인덱스에 대한 카운트(들)이며, 를 증가시킵니다.pg_stat_all_tables.idx_tup_fetch테이블에 대해 계산되지만 영향을 미치지 않습니다.pg_stat_all_indexes.idx_tup_fetch.
참고:그idx_tup_read그리고idx_tup_fetch카운트는 비트맵 스캔을 사용하지 않고도 다를 수 있습니다. 왜냐하면idx_tup_read인덱스에서 검색된 인덱스 항목을 계산하는 동안idx_tup_fetch테이블에서 가져온 실시간 행 수를 계산합니다. 죽은 행이나 아직 커밋되지 않은 행을 인덱스를 사용하여 가져오는 경우 또는 인덱스 전용 스캔을 통해 힙 가져오기를 방지하는 경우 후자는 더 적습니다.
표 27-8.pg_statio_all_tables보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 렐리드 | oid | 테이블의 OID |
| 스키마 이름 | 이름 | 이 테이블이 있는 스키마의 이름 |
| relname | 이름 | 이 테이블의 이름 |
| heap_blks_read | 비긴트 | 이 테이블에서 읽은 디스크 블록 수 |
| heap_blks_hit | 비긴트 | 이 테이블의 버퍼 히트 수 |
| idx_blks_read | 비긴트 | 이 테이블의 모든 인덱스에서 읽은 디스크 블록 수 |
| idx_blks_hit | 비긴트 | 이 테이블의 모든 인덱스에 대한 버퍼 히트 수 |
| toast_blks_read | 비긴트 | 이 테이블의 TOAST 테이블에서 읽은 디스크 블록 수(있는 경우) |
| toast_blks_hit | 비긴트 | 이 테이블의 TOAST 테이블에 있는 버퍼 히트 수(있는 경우) |
| tidx_blks_read | 비긴트 | 이 테이블의 TOAST 테이블 인덱스(있는 경우)에서 읽은 디스크 블록 수 |
| tidx_blks_hit | 비긴트 | 이 테이블의 TOAST 테이블 인덱스(있는 경우)의 버퍼 히트 수 |
그pg_statio_all_tables뷰에는 현재 데이터베이스(TOAST 테이블 포함)의 각 테이블에 대해 하나의 행이 포함되어 해당 특정 테이블의 I/O에 대한 통계를 표시합니다. 그만큼pg_statio_user_tables그리고pg_statio_sys_tables뷰에는 동일한 정보가 포함되어 있지만 각각 사용자 테이블과 시스템 테이블만 표시하도록 필터링되었습니다.
표 27-9.pg_statio_all_indexes보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 렐리드 | oid | 이 인덱스에 대한 테이블의 OID |
| indexrelid | oid | 이 색인의 OID |
| 스키마 이름 | 이름 | 이 인덱스가 있는 스키마의 이름 |
| relname | 이름 | 이 색인에 대한 테이블 이름 |
| indexrelname | 이름 | 이 색인의 이름 |
| idx_blks_read | 비긴트 | 이 인덱스에서 읽은 디스크 블록 수 |
| idx_blks_hit | 비긴트 | 이 인덱스의 버퍼 적중 수 |
그pg_statio_all_indexes뷰에는 현재 데이터베이스의 각 인덱스에 대해 하나의 행이 포함되어 해당 특정 인덱스의 I/O에 대한 통계를 표시합니다. 그만큼pg_statio_user_indexes그리고pg_statio_sys_indexes뷰에는 동일한 정보가 포함되어 있지만 각각 사용자 및 시스템 색인만 표시하도록 필터링되었습니다.
표 27-10.pg_statio_all_sequences보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 렐리드 | oid | 시퀀스의 OID |
| 스키마 이름 | 이름 | 이 시퀀스가 있는 스키마의 이름 |
| relname | 이름 | 이 시퀀스의 이름 |
| blks_read | 비긴트 | 이 시퀀스에서 읽은 디스크 블록 수 |
| blks_hit | 비긴트 | 이 시퀀스의 버퍼 히트 수 |
그pg_statio_all_sequences뷰에는 현재 데이터베이스의 각 시퀀스에 대해 하나의 행이 포함되어 해당 특정 시퀀스의 I/O에 대한 통계를 표시합니다.
표 27-11.pg_stat_user_functions보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 재미있는 | oid | 함수의 OID |
| 스키마 이름 | 이름 | 이 함수가 있는 스키마의 이름 |
| 기능 이름 | 이름 | 이 함수의 이름 |
| 호출 | 비긴트 | 이 함수가 호출된 횟수 |
| total_time | 배정밀도 | 이 함수와 이 함수가 호출하는 다른 모든 함수에서 소요된 총 시간(밀리초) |
| self_time | 배정밀도 | 이 함수에 의해 호출된 다른 함수를 포함하지 않고 이 함수 자체에 소요된 총 시간(밀리초) |
그pg_stat_user_functions뷰에는 추적된 각 함수에 대해 하나의 행이 포함되어 해당 함수 실행에 대한 롤 토토를 표시합니다. 그만큼트랙_기능매개변수는 추적할 기능을 정확하게 제어합니다.
표 27-12.pg_stat_replication보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| pid | 정수 | WAL 발신자 프로세스의 프로세스 ID |
| usesysid | oid | 이 WAL 발신자 프로세스에 로그인한 사용자의 OID |
| 사용자 이름 | 이름 | 이 WAL 발신자 프로세스에 로그인한 사용자의 이름 |
| 응용프로그램_이름 | 텍스트 | 이 WAL 발신자에 연결된 애플리케이션의 이름 |
| 클라이언트_주소 | inet | 이 WAL 발신자에 연결된 클라이언트의 IP 주소. 이 필드가 null이면 클라이언트가 서버 시스템의 Unix 소켓을 통해 연결되어 있음을 나타냅니다. |
| 클라이언트_호스트 이름 | 텍스트 | 다음의 역방향 DNS 조회로 보고된 연결된 클라이언트의 호스트 이름클라이언트_주소. 이 필드는 IP 연결에 대해서만 null이 아니며, 다음 경우에만 해당됩니다.로그_호스트 이름활성화되었습니다. |
| 클라이언트_포트 | 정수 | 클라이언트가 이 WAL 발신자와 통신하기 위해 사용하는 TCP 포트 번호, 또는-1Unix 소켓을 사용하는 경우 |
| backend_start | 시간대가 포함된 타임스탬프 | 이 프로세스가 시작된 시간, 즉 클라이언트가 이 WAL 발신자에 연결된 시간 |
| backend_xmin | xid | 이 대기는xmin수평 보고자hot_standby_feedback. |
| 상태 | 텍스트 | 현재 WAL 발신자 상태 |
| sent_location | pg_lsn | 이 연결에서 전송된 마지막 트랜잭션 로그 위치 |
| write_location | pg_lsn | 이 대기 서버가 디스크에 기록한 마지막 트랜잭션 로그 위치 |
| flush_location | pg_lsn | 이 대기 서버에 의해 디스크로 플러시된 마지막 트랜잭션 로그 위치 |
| replay_location | pg_lsn | 이 대기 서버의 데이터베이스에 마지막 트랜잭션 로그 위치가 재생되었습니다. |
| 동기화_우선순위 | 정수 | 동기 대기 서버로 선택되기 위한 이 대기 서버의 우선순위 |
| sync_state | 텍스트 | 이 대기 서버의 동기 상태 |
그pg_stat_replication뷰에는 WAL 발신자 프로세스당 하나의 행이 포함되어 해당 발신자의 연결된 대기 서버에 대한 복제에 대한 통계를 표시합니다. 직접 연결된 대기만 나열됩니다. 다운스트림 대기 서버에 대한 정보는 없습니다.
표 27-13.pg_stat_database_contributes보기
| 칼럼 | 유형 | 설명 |
|---|---|---|
| 데이트 | oid | 데이터베이스의 OID |
| 데이터이름 | 이름 | 이 데이터베이스의 이름 |
| confl_tablespace | 비긴트 | 삭제된 테이블스페이스로 인해 취소된 이 데이터베이스의 쿼리 수 |
| confl_lock | 비긴트 | 잠금 시간 초과로 인해 취소된 이 데이터베이스의 쿼리 수 |
| confl_snapshot | 비긴트 | 오래된 스냅샷으로 인해 취소된 이 데이터베이스의 쿼리 수 |
| confl_bufferpin | 비긴트 | 고정된 버퍼로 인해 취소된 이 데이터베이스의 쿼리 수 |
| confl_deadlock | 비긴트 | 교착 상태로 인해 취소된 이 데이터베이스의 쿼리 수 |
그pg_stat_database_contributes뷰에는 데이터베이스당 하나의 행이 포함되어 대기 서버의 복구 충돌로 인해 발생하는 쿼리 취소에 대한 데이터베이스 전체 통계를 표시합니다. 마스터 서버에서는 충돌이 발생하지 않으므로 이 보기에는 대기 서버에 대한 정보만 포함됩니다.
통계를 보는 다른 방법은 위에 표시된 표준 보기에서 사용되는 것과 동일한 기본 통계 액세스 기능을 사용하는 쿼리를 작성하여 설정할 수 있습니다. 함수 이름과 같은 자세한 내용은 표준 보기의 정의를 참조하세요. (예를 들어,psql발행할 수 있습니다\d+ pg_stat_activity.) 데이터베이스별 통계에 대한 액세스 함수는 보고할 데이터베이스를 식별하기 위한 인수로 데이터베이스 OID를 사용합니다. 테이블별 및 인덱스별 함수는 테이블 또는 인덱스 OID를 사용합니다. 함수별 통계를 위한 함수는 함수 OID를 사용합니다. 이 함수를 사용하면 현재 데이터베이스의 테이블, 인덱스, 함수만 볼 수 있습니다.
통계 수집과 관련된 추가 기능은 다음에 나열되어 있습니다.표 27-14.
표 27-14. 추가 통계 기능
| 기능 | 반환 유형 | 설명 |
|---|---|---|
pg_backend_pid() |
정수 | 현재 세션을 처리하는 서버 프로세스의 프로세스 ID |
pg_stat_get_activity(정수) |
레코드 집합 | 지정된 PID가 있는 백엔드에 대한 정보 레코드를 반환하거나 다음의 경우 시스템의 각 활성 백엔드에 대해 하나의 레코드를 반환합니다.NULL이 지정되었습니다. 반환된 필드는pg_stat_activity보기. |
pg_stat_clear_snapshot() |
공허 | 현재 통계 스냅샷 삭제 |
pg_stat_reset() |
공허 | 현재 데이터베이스의 모든 통계 카운터를 0으로 재설정(수퍼유저 권한 필요) |
pg_stat_reset_shared(텍스트) |
공허 | 인수에 따라 일부 클러스터 전체 통계 카운터를 0으로 재설정합니다(수퍼유저 권한 필요). 부름pg_stat_reset_shared('bgwriter')에 표시된 모든 카운터를 0으로 만듭니다pg_stat_bgwriter보기. 부름pg_stat_reset_shared('아카이버')에 표시된 모든 카운터를 0으로 만듭니다pg_stat_archiver보기. |
pg_stat_reset_single_table_counters(oid) |
공허 | 현재 데이터베이스의 단일 테이블 또는 인덱스에 대한 통계를 0으로 재설정(수퍼유저 권한 필요) |
pg_stat_reset_single_function_counters(oid) |
공허 | 현재 데이터베이스의 단일 함수에 대한 통계를 0으로 재설정(수퍼유저 권한 필요) |
pg_stat_get_activity,의 기본 기능pg_stat_activityview는 각 백엔드 프로세스에 대해 사용 가능한 모든 정보가 포함된 레코드 세트를 반환합니다. 때로는 이 정보의 일부만 얻는 것이 더 편리할 수도 있습니다. 이러한 경우에는 이전 백엔드별 통계 액세스 기능 세트를 사용할 수 있습니다. 이것들은 다음에 표시됩니다.표 27-15. 이러한 액세스 기능은 1부터 현재 활성화된 백엔드 수까지의 백엔드 ID 번호를 사용합니다. 함수pg_stat_get_backend_idset은 이러한 함수를 호출하기 위해 각 활성 백엔드에 대해 하나의 행을 생성하는 편리한 방법을 제공합니다. 예를 들어, 다음을 표시하려면PIDs 및 모든 백엔드의 현재 쿼리:
SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
pg_stat_get_backend_activity(s.backendid) AS 쿼리
FROM (SELECT pg_stat_get_backend_idset() AS 백엔드) AS s;
표 27-15. 백엔드별 통계 함수
| 기능 | 반환 유형 | 설명 |
|---|---|---|
pg_stat_get_backend_idset() |
정수 집합 | 현재 활성 백엔드 ID 번호 집합(1부터 활성 백엔드 수까지) |
pg_stat_get_backend_activity(정수) |
텍스트 | 이 백엔드의 가장 최근 쿼리 텍스트 |
pg_stat_get_backend_activity_start(정수) |
시간대가 포함된 타임스탬프 | 가장 최근 쿼리가 시작된 시간 |
pg_stat_get_backend_client_addr(정수) |
inet | 이 백엔드에 연결된 클라이언트의 IP 주소 |
pg_stat_get_backend_client_port(정수) |
정수 | 클라이언트가 통신에 사용하는 TCP 포트 번호 |
pg_stat_get_backend_dbid(정수) |
oid | 이 백엔드가 연결된 데이터베이스의 OID |
pg_stat_get_backend_pid(정수) |
정수 | 이 백엔드의 프로세스 ID |
pg_stat_get_backend_start(정수) |
시간대가 포함된 타임스탬프 | 이 프로세스가 시작된 시간 |
pg_stat_get_backend_userid(정수) |
oid | 이 백엔드에 로그인한 사용자의 OID |
pg_stat_get_backend_waiting(정수) |
부울 | 이 백엔드가 현재 잠금을 기다리고 있는 경우 true |
pg_stat_get_backend_xact_start(정수) |
시간대가 포함된 타임스탬프 | 현재 트랜잭션이 시작된 시간 |