[database] 파티셔닝
Updated:
개요
- 데이터베이스를 분할하여 성능, 관리 및 가용성 향상을 도모하는 튜닝 기법
- 분할된 각 부분을 파티션이라고 부름
- 논리적으로는 하나의 테이블이지만 물리적으로 여러개의 파티션으로 구성
- 대표적으로 분산 데이터베이스 관리 시스템에 사용
- 파티션이 여러 노드에 분산되어 있고 사용자가 특정 노드의 파티션에 트랜잭션 수행
- 가용성과 보안을 유지하면서 성능 향상
장점
- 파티션 단위의 백업/복구
- 디스크 장애 시 영햠 범위는 해당 파티션만 이므로 가용성 향상
- 성능
- 데이터 접근 범위 감소
- 디스크 I/O 분산
단점
- 테이블간의 JOIN 비용 증가
- 파티션을 결정하기 위한 연산 오버헤드 발생
종류
- 별도의 작은 데이터베이스로 분할하거나 특정 요소를 분할
- 수평 파티셔닝
- 하나의 테이블의 각 행을 다른 테이블에 분할
- 성별이 남성인 사람은 a테이블, 여성인 사람은 b 테이블에 저장
- 통합 뷰를 보여주어야 하는 경우 파티션 테이블들을 union
- 샤딩과 동일한 개념
- 하나의 테이블의 각 행을 다른 테이블에 분할
- 수직 파티셔닝
- 테이블의 열 일부를 다른 테이블에 분할
- 보통 사용 빈도가 낮거나 크기가 큰 열을 분할하여 조회 성능 향상
- 분할 된 테이블들의 대한 뷰 생성 시 성능 저하
기준
- 파티셔닝 키를 이용하여 특정 기준에 따라 파티션을 결정
- 범위 파티셔닝
- 파티셔닝 키가 특정 범위 내의 존재 여부를 판단하여 파티션을 선택
- 목록 파티셔닝
- 파티션에 값 목록이 할당
- 파티셔닝 키에 목록에 있는 값이 있으면 파티션을 선택
- 해시 파티셔닝
- 해시 함수를 이용하여 파티션 선택
- 라운드 로빈 파티셔닝
- n개의 파티션을 균등하게 선택
- 합성 파티셔닝
- n개의 기준을 조합하여 파티셔닝 수행