본문으로 바로가기

샤딩?파티셔닝?

category 나의 주니어 개발 일기/DB 2025. 8. 29. 17:42
728x90
반응형
SMALL

🎯 샤딩의 목적

  • DB 수평 확장 (Horizontal Scaling)
    → 하나의 DB 서버로 감당이 안 될 때, 여러 서버로 데이터를 분산.
  • 처리량(Throughput) 증가
    → 샤드가 여러 개면 동시에 I/O 가능 → TPS(Transactions per second) 증가.
  • 부하 분산 (Load Balancing)
    → 특정 샤드만 핫스팟이 되지 않게 잘 분산하면 전체 안정성 향상.
  • 무한 확장성
    → 데이터가 늘어나도 샤드만 추가하면 됨.

👉 즉, DB 자체를 여러 개로 쪼개서 “확장성”과 “부하 분산”을 확보하는 목적.

한계

  • 샤드 간 JOIN 불가능 → 애플리케이션 단에서 조합해야 함.
  • 샤드 간 데이터 이동(리밸런싱)이 필요할 수 있음.
  • 운영 난이도 ↑ (샤딩 키 설계, 샤드 모니터링/운영 도구 필요).

 

🎯 파티셔닝의 목적

  • 대용량 테이블을 쪼개서 관리
    → 한 테이블이 너무 커지면 쿼리할 때 디스크 I/O가 커짐. 파티션으로 나눠서 필요한 조각만 검색.
  • 성능 최적화
    → 쿼리가 특정 파티션만 타게 하여 검색 범위 축소.
  • 관리 편의성
    → 오래된 데이터(예: 1년 전 로그)는 통째로 파티션 드롭 → 빠른 아카이빙/삭제.
  • 운영 효율
    → 백업/복구/인덱싱을 파티션 단위로 할 수 있음.

👉 즉, 한 DB 인스턴스 안에서 테이블을 효율적으로 관리하고 성능을 높이는 목적

한계

  • 여전히 단일 DB 인스턴스라서 CPU/메모리/디스크 자원 한계는 그대로.
  • 잘못 설계하면 특정 파티션에만 쿼리가 몰려 “핫 파티션” 문제 발생.
728x90
반응형
LIST