-
Chapter 6. PartitioningDatabase 2021. 2. 18. 14:48
1. Partitioning이란
서비스의 크기가 커져 데이터가 쌓이면 DB 용량의 한계와 성능 저하 이슈가 발생한다. Full Scanning의 범위도 증가하고, Index Table 자체의 크기도 커져 자연스럽게 삽입, 삭제, 탐색 연산의 성능저하가 발생한다.
따라서 테이블을 물리적으로 분할하는 파티셔닝 기법이 나왔다. 이때 테이블을 여러 개의 파티션으로 분할하기 위해서는 키 값에 따라 어떤 파티션에 속하는지 알아야한다.
2. 장점
- 테이블에 담긴 데이터가 줄어들어 풀 스캐닝의 성능도 좋아지고, 인덱스 테이블의 크기도 작아져 DML 성능도 좋아진다.
- 데이터를 분할하여 저장해 물리적 데이터 손실 시 일부 데이터만 손실되고, 파티셔닝마다 다르게 백업하여 백업의 비용을 줄일 수 있다. Ex) 연도별 데이터 백업
3. 단점
- 데이터들이 어느 파티셔닝에 들어간지 알아야하는 오버헤드가 존재한다. 당연히 Table간의 Join 연산 추가 비용도 발생한다.
4. 수평 파티션
- 스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장한다.
- KEY를 기준으로 데이터를 분산 저장한다. 예를 들어, '서현동 주민 테이블', '정자동 주민 테이블' 등으로 분할한다.
- 데이터 갯수를 기준으로 분할하여, 데이터 갯수가 작아져 DML 성능이 향상된다.
5. 수직 파티션
- 테이블의 컬럼을 나눈다. 즉, 스키마를 나누어 데이터를 저장한다.
- 한 테이블을 조회하면 결국 모든 컬럼을 메모리에 올리게 되므로 필요 없는 컬럼까지 올라가서 한 번에 읽을 수 있는 ROW가 줄어든다. 만약 컬럼을 분할하면 한 번에 읽을 수 있는 ROW가 증가하여 I/O 측면에서 봤을 때 성능상 이점이 생긴다.
- 하지만 컬럼의 중복이 발생한다.
6. Partitioning 방법
- 범위 기간으로 데이터를 분할한다. Ex) 연도별 데이터
- 카테고리별로 데이터를 분할한다. Ex) 대륙별, 지역별
- Hash 함수 결과 값을 기준으로 데이터를 분할한다.
'Database' 카테고리의 다른 글
Chapter 7. Transaction (0) 2021.02.20 Chapter 5. Index (0) 2021.02.18 Chapter 4. Normalization (0) 2021.02.18 Chapter 3. Join (0) 2021.02.18 Chapter 2. SQL과 NoSQL (0) 2021.02.17