CS/Database
[데이터베이스] 파티셔닝(Partitioning)
테리는당근을좋아해
2020. 6. 24. 14:57
파티셔닝(Partitioning)
- Scale Out 방법 중 하나
- 큰 테이블이나 인덱스를 관리하기 쉬운 Partition이라는 작은 단위로 분할
1) 종류
(1) Pysical Partitioning
- 서버를 여러 개 두어 부하 분산
(2) Logical Paritioning
- 한 테이블의 각 레코드 또는 컬럼을 여러 테이블로 분산
2) 장점
- Partition 단위의 백업 및 복구 가능
- Partition 단위의 삽입/삭제/갱신으로 부하를 줄임
- 데이터 가용성 향상
3) 단점
- Table 간 Join 비용
4) 파티셔닝 방법
(1) 수평 파티셔닝(Sharding)
- 테이블을 행 단위로 분할
- 하나의 테이블의 각 행을 여러 테이블에 분산 저장
- 스키마가 같은 테이블을 두 개 이상 만들어 샤드키를 기준으로 나누어 저장
(2) 수직 파티셔닝(Partitioning)
- 테이블을 컬럼 단위로 분할
- 하나의 엔티티를 다수의 엔티티로 분할하는 것
- 이미 정규화된 테이블을 분리
5) 데이터베이스 파티셔닝 분할 기준
(1) 범위 분할(Range Partitioning)
- 분할 키 값이 범위 내에 있는 지 여부로 구분
(2) 목록 분할(List Partitioning)
- 값 목록에 파티션을 할당 분할 키 값을 그 목록에 비추어 파티션 선택
(3) 해시 분할(Hash Partitioning)
- 해시 함수의 값에 따라 파티션 분할
(4) 합성 분할(Composite Partitioning)
- 분할 기준으로 여러 기법을 결합해 사용