Notice
Recent Posts
Recent Comments
Link
반응형
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- statistics update
- 오블완
- postgre 테이블 복사
- 통계 업데이트
- 코인 자동 매매
- 리눅스
- #postgresql
- PostgreSQL
- 쿠팡
- 배민
- 쿼리 자동완성
- 코인 시뮬레이션
- dbeaver 느림
- db 통계 업데이트
- 항상 실행
- 리눅스 디스크 추가
- AWS
- 티스토리챌린지
- #시스템관리
- 오토 트레이딩
- 리눅스 볼륨
- 도보배달
- #메모리관리
- 개발자팁
- db 테이블 복사
- #cpu모니터링
- 운동
- 무료서버감시
- uptimerobot
- 가성비 스드메
Archives
- Today
- Total
Energy Drink
PostgreSQL에서 데이터베이스 내 모든 테이블의 디스크 사용량 확인 본문
728x90
반응형
PostgreSQL에서는 데이터베이스 내 모든 테이블의 디스크 사용량(테이블, 인덱스, TOAST 포함)을 한 번에 조회할 수 있습니다.
1. 전체 테이블 디스크 사용량 확인 쿼리
다음 쿼리는 현재 데이터베이스의 모든 테이블에 대해 테이블 본체, 인덱스, TOAST 데이터 크기, 그리고 전체 디스크 사용량을 조회합니다.
SELECT
schemaname AS schema_name,
relname AS table_name,
pg_size_pretty(pg_relation_size(relid)) AS table_size,
pg_size_pretty(pg_indexes_size(relid)) AS index_size,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM
pg_stat_user_tables
ORDER BY
pg_total_relation_size(relid) DESC;
2. 쿼리 설명
- pg_stat_user_tables: 사용자 테이블 목록을 제공하는 시스템 뷰입니다.
- schemaname: 테이블이 속한 스키마 이름.
- relname: 테이블 이름.
- pg_relation_size(relid): 테이블 본체(데이터)의 디스크 사용량.
- pg_indexes_size(relid): 해당 테이블과 연결된 인덱스의 디스크 사용량.
- pg_total_relation_size(relid): 테이블 본체, 인덱스, TOAST 데이터를 포함한 전체 디스크 사용량.
- pg_size_pretty: 바이트 단위의 크기를 사람이 읽기 쉬운 형식(예: KB, MB, GB)으로 변환.
- ORDER BY pg_total_relation_size(relid) DESC: 디스크 사용량 기준으로 결과를 내림차순 정렬.
3. 실행 결과
schema_name | table_name | table_size | index_size | total_size |
public | employees | 10 MB | 2 MB | 12 MB |
public | sales_data | 8 MB | 1 MB | 9 MB |
public | orders | 5 MB | 1 MB | 6 MB |
결과 해석
- employees:
- 테이블 본체 크기: 10 MB
- 인덱스 크기: 2 MB
- 전체 디스크 사용량: 12 MB
- sales_data:
- 전체 크기: 9 MB
- 인덱스 비율이 낮아 데이터 접근 효율이 높을 가능성이 있음.
- orders:
- 크기가 작아 상대적으로 적은 스토리지를 차지.
4. 활용 방안
- 디스크 사용량 모니터링:
- pg_total_relation_size를 활용해 스토리지 부족 가능성을 사전에 예측.
- 인덱스 최적화:
- 인덱스 크기가 지나치게 큰 경우, 사용되지 않는 인덱스를 확인하고 제거.
- 테이블 관리:
- 자주 사용되지 않는 대규모 테이블은 파티셔닝하거나 보관용 데이터베이스로 이동.
5. 추가 팁: 특정 스키마만 조회
특정 스키마의 테이블만 조회하고 싶다면 WHERE 조건을 추가합니다.
SELECT
schemaname AS schema_name,
relname AS table_name,
pg_size_pretty(pg_relation_size(relid)) AS table_size,
pg_size_pretty(pg_indexes_size(relid)) AS index_size,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size
FROM
pg_stat_user_tables
WHERE
schemaname = 'public'
ORDER BY
pg_total_relation_size(relid) DESC;
728x90
반응형
'Programing > Postgresql' 카테고리의 다른 글
Patroni를 사용한 PostgreSQL HA 설치 및 구성 (0) | 2024.12.11 |
---|---|
PostgreSQL 통계 정보 업데이트 (Analyze) (0) | 2024.11.22 |
PostgreSQL 세션 및 쿼리 모니터링 (1) | 2024.11.20 |
PostgreSQL에서 실행 중인 쿼리 확인 및 종료 (0) | 2024.11.19 |
PostgreSQL에서 JSON 데이터 다루기 (0) | 2024.11.13 |