Updated:

less than 1 minute read

개요

  • 데이터베이스를 분할하여 성능, 관리 및 가용성 향상을 도모하는 튜닝 기법
  • 분할된 각 부분을 파티션이라고 부름
  • 논리적으로는 하나의 테이블이지만 물리적으로 여러개의 파티션으로 구성
  • 대표적으로 분산 데이터베이스 관리 시스템에 사용
    • 파티션이 여러 노드에 분산되어 있고 사용자가 특정 노드의 파티션에 트랜잭션 수행
    • 가용성과 보안을 유지하면서 성능 향상


장점

  • 파티션 단위의 백업/복구
  • 디스크 장애 시 영햠 범위는 해당 파티션만 이므로 가용성 향상
  • 성능
    • 데이터 접근 범위 감소
    • 디스크 I/O 분산


단점

  • 테이블간의 JOIN 비용 증가
  • 파티션을 결정하기 위한 연산 오버헤드 발생


종류

  • 별도의 작은 데이터베이스로 분할하거나 특정 요소를 분할
  • 수평 파티셔닝
    • 하나의 테이블의 각 행을 다른 테이블에 분할
      • 성별이 남성인 사람은 a테이블, 여성인 사람은 b 테이블에 저장
    • 통합 뷰를 보여주어야 하는 경우 파티션 테이블들을 union
    • 샤딩과 동일한 개념
  • 수직 파티셔닝
    • 테이블의 열 일부를 다른 테이블에 분할
    • 보통 사용 빈도가 낮거나 크기가 큰 열을 분할하여 조회 성능 향상
    • 분할 된 테이블들의 대한 뷰 생성 시 성능 저하


기준

  • 파티셔닝 키를 이용하여 특정 기준에 따라 파티션을 결정
  • 범위 파티셔닝
    • 파티셔닝 키가 특정 범위 내의 존재 여부를 판단하여 파티션을 선택
  • 목록 파티셔닝
    • 파티션에 값 목록이 할당
    • 파티셔닝 키에 목록에 있는 값이 있으면 파티션을 선택
  • 해시 파티셔닝
    • 해시 함수를 이용하여 파티션 선택
  • 라운드 로빈 파티셔닝
    • n개의 파티션을 균등하게 선택
  • 합성 파티셔닝
    • n개의 기준을 조합하여 파티셔닝 수행