PostgreSQL 9.6.2 문서 | |||
---|---|---|---|
이전 | 위로 | 장 28. 데이터베이스 성능 모니터링 | 다음 |
PostgreSQL에서는 특정 명령이 실행 되고 있는 동안 그 작업의 진행 상태를 살펴 볼 수 있다. 이 기능은 현재 VACUUM 명령에 대해서만 사용할 수 있다. 앞으로 계속 추가 될 것이다.
VACUUM 명령이 실행 될 때마다, pg_stat_progress_vacuum 뷰에 하나의 로우 단위로 각 개별 작업에 대한 진행 상태를 보관한다. (autovacuum 작업자 프로세스도 포함한다.) 이 뷰의 각 칼럼에 대한 설명과 그 값을 어떻게 해석할 것인가는 아래에서 다룬다. 이 진행 상태 보고에는 VACUUM FULL 작업에 대해서는 제외한다. 따라서 사용자의 VACUUM FULL 명령에 대한 진행 상태는 볼 수 없다.
표 28-20. pg_stat_progress_vacuum 뷰
칼럼 | 자료형 | 설명 |
---|---|---|
pid | integer | 해당 PID |
datid | oid | 해당 프로세스가 접속한 데이터베이스 OID |
datname | name | 해당 프로세스가 접속한 데이터베이스 이름 |
relid | oid | 현재 vacuum 작업 중인 테이블 OID |
phase | text | 현재 진행 상태. 표 28-21 참조. |
heap_blks_total | bigint | 테이블의 힙 블럭 전체 수량. 이 숫자는 테이블 탐색 작업 시작 때 결정된다. VACUUM 작업 진행 과정 속에서 추가 되거나 삭제되는 블럭에 대해서는 고려하지 않는다. |
heap_blks_scanned | bigint | 탐색한 힙 블럭 수. 탐색 최적화를 위해서 visibility map을 이용하기 때문에, vacuum 대상 블럭인지 조사하는 작업을 몇몇 블럭에서 하지 않을 수도 있다. 이렇게 건너뛴 블럭도 이 수에 모두 포함한다. 이렇게 해서 이 수가 heap_blks_total 수와 같으면, vacuum 작업이 완료된 것이다. 이 수는 scanning heap 상태에서만 증가한다. |
heap_blks_vacuumed | bigint | vacuum 작업을 한 힙 블럭 수. 테이블에 인덱스가 없다면, 이 수는 vacuuming heap 상태에서만 증가한다. 더 이상 사용하지 않는 자료(dead tuple)가 없는 블럭에 대해서는 건너 뛰기 때문에 이 수는 한꺼번에 많은 수가 증가 할 수도 있다. |
index_vacuum_count | bigint | vacuum 작업이 완료된 인덱스 수 |
max_dead_tuples | bigint | 인덱스 vacuum 작업을 수행해야 할 경우 고려해야할 dead tuple 수 이 수는 maintenance_work_mem 환경 설정값에 기초한다. |
num_dead_tuples | bigint | 인덱스 vacuum 작업으로 처리한 dead tuple 수 |
표 28-21. VACUUM 상태
상태 | 설명 |
---|---|
initializing | VACUUM 탐색 작업 초기화 중. 이 상태는 순십간에 지나갈 것이다. |
scanning heap | VACUUM 작업이 테이블 탐색 중. 각 블럭을 청소하고, 필요하다면, 블럭을 버리는 작업, 또는 자료 영구 보관 작업까지 진행한다. 한 블럭 작업이 마무리 할 때마다 heap_blks_scanned 칼럼 값이 증가된다. |
vacuuming indexes | VACUUM 작업이 인덱스 청소 중. 테이블에 인덱스가 있다면, 이 상태는 테이블 탐색이 끝난 뒤 한 번 나타난다. maintenance_work_mem 설정값이 충분히 크지 않아 모든 dead tuple을 한 번에 처리할 수 없다면, 한 번의 vacuum 작업에서 여러번 나타날 수도 있다. |
vacuuming heap | VACUUM 작업이 테이블 힙을 청소 중. 청소 작업은 힙 탐색 작업과 다르며, 인덱스 청소 작업 뒤에 한 번 나타난다. 만일 heap_blks_scanned 수가 heap_blks_total 수보다 적다면, 이 상태 다음에 힙 탐색 상태가 되며, 그렇지 않다면, 인덱스 정리 상태로 넘어간다. |
cleaning up indexes | VACUUM 작업에서 인덱스들을 정리 하는 중. 이 상태는 힙 탐색이 끝났고, 모든 인덱스와 힙의 정리 작업도 끝난 다음에 나타난다. |
truncating heap | VACUUM 작업에서 해당 테이블 끝 부분에 있는 비어있는 블럭을 OS로 반환하는 작업 상태. 이 상태는 인덱스 정리 작업 다음에 나타난다. |
performing final cleanup | VACUUM 최종 마무리 단계. 이 상태에서는 VACUUM 작업은 여유 공간 지도 파일을 정리하고, pg_class의 통계 정보를 갱신하고, 통계 수집기로 통계 정보를 보낸다. 이 상태가 끝나면, VACUUM 작업은 끝난다. |