파티셔닝(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를 최소화
- 클러스터링된 테이블 간의 조인 성능 향상
- 데이터 조회 성능은 향상되지만,
- 데이터의 추가/수정/삭제나 전체 스캔 시 성능 저하 가능
- 데이터의 분포도가 넓을 경우 더 유리
- 클러스터링된 테이블에서는 클러스터드 인덱스 생성 시 성능 향상
클러스터 대상 테이블⭐️
- 데이터 분포도가 넓은 테이블
- 대량 데이터의 범위 조회가 빈번한 테이블
- 자주 변경(추가/수정/삭제)되지 않는 테이블
- 자주 조인되는 테이블
- 정렬, 그룹화, 연합 연산이 자주 사용되는 테이블