[PostgreSQL] 데이터베이스 용량 조회 방법

2025. 2. 17. 00:42·개발 (Development)/PostgreSQL

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
'개발 (Development)/PostgreSQL' 카테고리의 다른 글
  • [PostgreSQL] JSON 컬럼에서 Key-Value 추출 및 MyBatis 연동
  • [PostgreSQL/TimescaleDB] Hypertable과 Chunk를 포함한 최소 크기 덤프 방법
  • [PostgreSQL] WAL(Write-Ahead Logging) 로그 관리 가이드
  • [PostgreSQL] 데이터베이스를 물리적으로 다른 서버에 있는 동일 데이터베이스로 옮기는 방법
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    springboot
    백준자바
    백준
    DevOps
    PostgreSQL
    데이터분석
    pandas
    리눅스 마스터 2급
    MyBatis
    Linux
    오답노트
    timescaledb
    Kubernetes
    deepseek
    ADsP
    docker
    JPA
    Spring boot
    javascript
    백준알고리즘
    리눅스 마스터 2급 2차
    자바
    AWS
    JSON
    Linux master
    Kafka
    python
    Vue.js
    java
    백준온라인저지
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[PostgreSQL] 데이터베이스 용량 조회 방법
상단으로

티스토리툴바