PostgreSQL에서 스키마별 데이터 용량을 확인하는 방법은 다음과 같습니다.
1. pg_total_relation_size 및 pg_namespace를 사용하여 스키마별 데이터 용량 조회
SELECT n.nspname AS schema_name,
pg_size_pretty(SUM(pg_total_relation_size(c.oid))) AS total_size
FROM pg_class c
JOIN pg_namespace n ON n.oid = c.relnamespace
WHERE n.nspname NOT IN ('pg_catalog', 'information_schema') -- 시스템 스키마 제외
GROUP BY n.nspname
ORDER BY SUM(pg_total_relation_size(c.oid)) DESC;
• pg_total_relation_size(c.oid): 테이블, 인덱스 등을 포함한 전체 크기
• pg_namespace: 스키마 정보를 저장하는 시스템 테이블
• pg_size_pretty(): 바이트 단위 크기를 읽기 쉽게 변환
2. pg_database_size를 활용하여 전체 데이터베이스 용량 확인
SELECT pg_size_pretty(pg_database_size(current_database())) AS database_size;
3. 개별 테이블 크기 확인
특정 스키마 내에서 개별 테이블 크기를 확인하려면 다음 쿼리를 사용할 수 있습니다.
SELECT schemaname, relname AS table_name,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_stat_user_tables
WHERE schemaname = 'your_schema'
ORDER BY pg_total_relation_size(relid) DESC;
• pg_stat_user_tables: 사용자 테이블 통계를 저장하는 뷰
• relid: 테이블의 OID
이 쿼리를 실행하면 특정 스키마 내에서 어떤 테이블이 가장 많은 공간을 차지하는지 알 수 있습니다.
반응형