Avatar
임호현
좋아요
댓글
[FAQ/PG|EPAS] EPAS 파일 시스템 사용률 문의

Question.

EPAS DB 에서 테이블 용량 조회시 아래의 쿼리를 사용하였습니다.

  SELECT pg_size_pretty(pg_relation_size('tb_rs_approval_doc'))

해당 쿼리로 전체 테이블의 용량을 구하여 합하면 100GB 가 나오나, 서버에서 DB 영역의 file 은 도합 300GB 정도를 사용하고 있습니다.

테이블 용량 총합과 DB 영역 file size 의 총합이 차이가 너무 많기에 문의 드립니다.

 

Answer.

 

용량 조회 쿼리문

--DB의 전체 사이즈
SELECT pg_size_pretty(pg_database_size('$database명'));
--테이블의 데이터 사이즈
SELECT pg_size_pretty(pg_relation_size('$테이블명'));
--테이블의 인덱스 사이즈
SELECT pg_size_pretty(pg_relation_size('$인덱스명'));
--테이블의 데이터와 인덱스 사이즈 합계
SELECT pg_size_pretty(pg_total_relation_size('$테이블명'));

 

파일사이즈와 차이

 update와 delete가 발생하면 기존 data는 dead tuple이 되어 사용하지 않지만 존재하게 됩니다.

이에 따라 신규 데이터가 입력되면서 사이즈가 증가하여 물리적인 크기가 실제  data row의 크기보다 좀 더 증가하는 경우가 존재합니다.

 일반적으로 vacuum을 통해서 dead 튜플을 삭제하지만 증가한 파일사이즈는 줄어들지 않고 디스크 블럭에서 빈공간으로 차지합니다. 때문에 블럭의 빈공간을 줄이려변 vacuum full analyze 수행이 필요할 것입니다.

 vacuum full 사용시 vaccum full 을 운영중인 db에서 사용시 서비스 영향도가 크기 때문에 운영중 사용을 권장하지 않습니다