Postgres : 구체화 된 뷰로 찍은 디스크 공간을 확인 하시겠습니까?


14

Postgres에서 색인 및 테이블의 크기를 확인하는 방법을 알고 있습니다 (버전 9.4를 사용하고 있습니다).

SELECT
   relname AS objectname,
   relkind AS objecttype,
   reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size
   FROM pg_class
   WHERE relpages >= 8
   ORDER BY relpages DESC;

그러나 이것은 구체화 된 견해를 보여주지 않습니다. 그들이 차지하는 디스크 공간을 어떻게 확인할 수 있습니까?

답변:


23

이것은 구체화 된 뷰가 relpages >= 8에 있다고 가정하고 있으며 pg_class, 반드시 그런 것은 아닙니다. 실제로 비어있을 수 있습니다 (아직 채워지지 않음) pg_class.relispopulated = FALSE. 이 경우 해당 디스크 파일의 크기 는 0 입니다.

대신 시도하십시오 :

SELECT relname   AS objectname
     , relkind   AS objecttype
     , reltuples AS entries
     , pg_size_pretty(pg_table_size(oid)) AS size  -- depending - see below
FROM   pg_class
WHERE  relkind IN ('r', 'i', 'm')
ORDER  BY pg_table_size(oid) DESC;

를 Where 유형을 사용할 수 있습니다 :

r= 일반 테이블,
i= 인덱스,
S= 시퀀스,
v= 뷰,
m= 구체화 된 뷰,
c= 복합 유형,
t= TOAST 테이블,
f= 외부 테이블

직접 작성하는 대신 데이터베이스 오브젝트 크기 함수 중 하나를 사용하십시오 . "테이블 크기"는 다른 방식으로 정의 될 수 있습니다. 세부:


1
실제로 정답입니다. 사람이 읽을 수있는 형식으로 크기를 인쇄 할 때 사전 순으로 정렬하여 크기별 순서가 잘못되었습니다.
Jack

@ 잭 : 좋은 지적입니다. 나는 더 합리적인 추가했다 ORDER BY.
Erwin Brandstetter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.