Partition
논리적인 데이터 element를 다수의 entity로 쪼개는 행위
큰 테이블이나 인덱스를 파티션 단위로 분할하는 것
애플리케이션 입장에서는 물리적 데이터 분할을 인식하지 못할 수 있다.
배경
서비스의 크기 ⬆️, 데이터의 규모 ⬆️ → DBMS의 용량의 한계와 성능 저하
⇒ 테이블을 파티션이라는 단위로 나뉘어 관리하는 파티셔닝 기법 등장
소프트웨어적인 데이터베이스 분산 처리 가능해짐
목적
- 성능
특정 DML과 쿼리 성능 향상, 대용량 WRITE 환경에서 효율적이다.
full scan에서 데이터 접근 범위 감소 → 성능 향상 - 가용성
물리적인 파티셔닝 → 전체 데이터 훼손 가능성 ⬇️
파티션 별로 독립적인 백업 및 복구가 가능하다. - 관리용이성
큰 테이블을 줄일 수 있다.
장점
파티션 단위 백업, 추가, 삭제, 변경
파티션 단위 조회 및 DML 수행함으로써 필요한 부분만 탐색할 수 있다.
단점
JOIN으로 인한 비용 증가
테이블과 인덱스를 별도로 파티셔닝 하는 건 불가능하다.
종류
수평 파티셔닝
스키마가 같은 데이터를 두 개 이상의 테이블에 나누어 저장한다.
샤딩
특징
- 키를 기반으로 여러 곳에 분산 저장 → 퍼포먼스, 가용성 목적
- 일반적인 분산 저장 기술로 보통 하나의 데이터베이스 내에서 이루어지는 경우를 말한다.
장점
- 데이터 개수를 기준으로 나눈다.
- 인덱스의 개수 ⬇️ → 성능 ⬆️
단점
- 서버 간의 연결 과정 많아진다.
- 데이터 탐색 과정 복잡 → latency ⬆️
- 서버 고장 시 데이터 무결성에 취약하다.
수직 파티셔닝
모든 컬럼 중 특정 컬럼을 쪼개서 따로 저장하는 형태
하나의 엔티티를 2개 이상으로 분리한다.
특징
- 3 정규화와 유사한 개념이지만 수직 파티셔닝은 정규화된 데이터를 분리하는 과정이다.
장점
- 자주 사용하는 컬럼 분리 → 성능 향상
- 같은 타입의 데이터 저장 → 높은 데이터 압축률
파티셔닝 분할 기준
- 범위 분할
분할 키 값이 범위 내에 있는지 여부로 구분.
ex ) 우편 번호 - 목록 분할
값 목록에 파티션 할당 - 해시 분할
해시 함수의 값에 따라 파티션 포함 여부 결정
- 합성 분할
여러 가지 분할 기술의 결합
참고문서
https://docs.oracle.com/cd/B12037_01/server.101/b10743/partconc.htm