[데이터베이스구축] 파티셔닝, 클러스터

thingzoo·2024년 2월 11일
0
post-thumbnail

파티셔닝(Partitioning)

  • 하나의 DB 내에서 특정 부분(데이터)을 여러 섹션(파티션)으로 분할하는 방법
  • 대용량 데이터의 조회속도 향상, 관리용이성, 성능 및 가용성 향상을 위해 사용

샤딩(Sharding)⭐️

  • 하나의 DB에 저장된 데이터를 작은 조각(샤드)으로 나누어 다수의 DB에 분산 저장 및 관리하는 기법
  • 데이터의 크기가 매우 클 때 효과적
  • 트래픽 분산시켜 성능 향상
  • 샤드(Shard)는 나눠진 데이터 블록의 구간(Epoch)을 의미

파티셔닝의 장단점

  • 장점
    • 데이터 가용성 향상
    • 파티션별 독립적인 백업 및 복구 가능
    • 성능 향상
    • 경합 감소
  • 단점
    • 테이블 간의 조인 비용 증가
    • 테이블과 인덱스는 동일한 파티션 전략을 따라야 함

파티셔닝의 종류

수평분할(Horizontal Partitioning)

  • 테이블의 행을 기준으로 분할
  • 스키마를 복제한 후 샤드키를 기준으로 데이터를 나눔

수직분할(Vertical Partitioning)

  • 테이블의 컬럼을 기준으로 분할
  • 자주 사용하는 컬럼 등을 분리시켜 성능 향상
  • 하나의 테이블을 2개이상으로 분리

수평 분할 기준(기법), 파티션 유형⭐️

(20.8)

범위 분할(Range Partitioning)

  • 파티션 키의 연속된 범위로 파티션 정의
  • 파티션 키 위주로 검색이 자주 실행될 경우 유용
  • 예: 월별, 분기별 등

목록 분할(List Partitioning)

  • 특정 파티션에 저장될 데이터에 대한 명시적 제어
  • 많은 SQL에서 해당 컬럼의 조건이 많이 들어오는 경우 유용
  • 예: (한국, 중국, 일본 - 아시아), (노르웨어, 스웨덴, 핀란드 - 북유럽)

해시 분할(Hash Partitioning)

  • 파티션 키값에 해시 함수를 적용하고, 거기서 반환된 값으로 파티션 매핑
  • 데이터가 모든 파티션에 고르게 분산되도록 DBMS가 관리
  • 병렬 처리 시 성능 효과 극대화

라운드 로빈 분할(Round Robin Partitioning)

  • 데이터를 균일하게 분배해서 저장

합성 분할(Composite Partitioning)

  • 위의 기술들을 복합적으로 사용

클러스터 설계

클러스터

  • 자주 사용되는 테이블의 데이터를 디스크 상 동일한 위치에 미리 정렬하여 저장하여 데이터 액세스 효율을 향상시키는 물리적 저장 방법

클러스터의 특징

  • 그룹화된 데이터는 같은 데이터 블록에 저장되어 디스크 I/O를 최소화
  • 클러스터링된 테이블 간의 조인 성능 향상
  • 데이터 조회 성능은 향상되지만,
  • 데이터의 추가/수정/삭제나 전체 스캔 시 성능 저하 가능
  • 데이터의 분포도가 넓을 경우 더 유리
  • 클러스터링된 테이블에서는 클러스터드 인덱스 생성 시 성능 향상

클러스터 대상 테이블⭐️

  • 데이터 분포도가 넓은 테이블
  • 대량 데이터의 범위 조회가 빈번한 테이블
  • 자주 변경(추가/수정/삭제)되지 않는 테이블
  • 자주 조인되는 테이블
  • 정렬, 그룹화, 연합 연산이 자주 사용되는 테이블
profile
공부한 내용은 바로바로 기록하자!

0개의 댓글