PostgreSQL에서 데이터베이스의 용량을 조회하는 방법은 다양합니다. 이 글에서는 데이터베이스, 테이블, 인덱스 등의 용량을 확인하는 다양한 SQL 쿼리를 소개합니다.
1. 전체 데이터베이스 용량 조회
현재 접속 중인 데이터베이스의 전체 크기를 조회하려면 아래의 쿼리를 사용합니다.
SELECT pg_size_pretty(pg_database_size(current_database()));
pg_database_size
함수는 바이트 단위로 크기를 반환하며, pg_size_pretty
를 사용하면 사람이 읽기 좋은 형식(예: MB, GB)으로 출력됩니다.
2. 특정 데이터베이스 용량 조회
다른 데이터베이스의 크기를 확인하고 싶다면 데이터베이스 이름을 인자로 전달합니다.
SELECT pg_size_pretty(pg_database_size('database_name'));
database_name
을 조회하려는 데이터베이스 이름으로 변경합니다.
3. 전체 데이터베이스 목록과 용량 조회
PostgreSQL 인스턴스 내 모든 데이터베이스의 크기를 조회하려면 다음 쿼리를 사용합니다.
SELECT datname AS database_name, pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database
ORDER BY pg_database_size(datname) DESC;
pg_database
시스템 카탈로그를 통해 데이터베이스 이름(datname
)과 크기를 가져옵니다.- 결과는 데이터베이스 크기 기준 내림차순으로 정렬됩니다.
4. 특정 테이블의 용량 조회
특정 테이블들의 크기를 알고 싶을 때는 다음 쿼리를 실행합니다.
SELECT relname AS table_name, pg_size_pretty(pg_relation_size(relid)) AS size
FROM pg_stat_user_tables
ORDER BY pg_relation_size(relid) DESC;
pg_stat_user_tables
는 사용자가 생성한 테이블 목록을 제공합니다.pg_relation_size
는 지정된 테이블의 데이터 크기를 반환합니다(인덱스 제외).
5. 특정 테이블의 전체 크기(데이터 + 인덱스 포함) 조회
테이블 데이터와 인덱스를 포함한 전체 용량을 확인하려면 아래 쿼리를 사용합니다.
SELECT relname AS table_name,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM pg_stat_user_tables
ORDER BY pg_total_relation_size(relid) DESC;
pg_total_relation_size
는 테이블과 그에 연결된 모든 인덱스를 포함한 크기를 반환합니다.
마치며
PostgreSQL에서 데이터베이스, 테이블, 인덱스의 크기를 조회하는 방법을 살펴보았습니다.
- 전체 데이터베이스 크기:
pg_database_size
- 테이블 크기(데이터만):
pg_relation_size
- 테이블 전체 크기(데이터 + 인덱스):
pg_total_relation_size
반응형
'개발 (Development) > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] JSON 컬럼에서 Key-Value 추출 및 MyBatis 연동 (0) | 2025.02.23 |
---|---|
[PostgreSQL/TimescaleDB] Hypertable과 Chunk를 포함한 최소 크기 덤프 방법 (0) | 2025.02.17 |
[PostgreSQL] WAL(Write-Ahead Logging) 로그 관리 가이드 (0) | 2025.02.17 |
[PostgreSQL] 데이터베이스를 물리적으로 다른 서버에 있는 동일 데이터베이스로 옮기는 방법 (0) | 2025.02.17 |
[PostgreSQL] PostgreSQL에서 SELECT 컬럼 수가 성능에 미치는 영향 (0) | 2025.02.17 |