파티셔닝 이란?
- 서비스의 크기가 점점 커지고 DB 데이터 규모가 대용량화 되면서
- DB용량의 한계와 성능 저하 이슈를 해결하기 위한 방법으로
- 테이블을 파티션이라는 작은 단위로 나누어 관리하는 것입니다.
장점
가용성
- 물리적인 파티셔닝으로 인해 전체 데이터의 훼손 가능성이 줄어들고 데이터 가용성이 향상됩니다.
관리용이성
성능
단점
- join으로 인한 비용이 증가합니다.
- 테이블과 인덱스를 별도로 파티셔닝 하는 건 불가능합니다.
파티셔닝 종류
수평 파티셔닝
- 한 테이블의 각 row를 다른 테이블에 분산시키는 것입니다.
ex)
스키마가 같지만 나눠져있는 주민 테이블
서현동 주민 테이블
, 정자동 주민 테이블
장점
단점
- 서버간의 연결과정이 많아집니다.
- 데이터를 찾는 과정이 기존보다 복잡해 지연시간이 증가합니다.
- 한 서버가 고장나면 데이터의 무결성이 깨질 가능성이 있습니다.
수직 파티셔닝
- 테이블의 일부 컬럼을 빼내는 형태로 분할합니다.
- 3정규화와 비슷하지만, 이미 정규화된 데이터를 분리하는 과정입니다.
장점
- 자주 사용하는 컬럼을 분리시켜 성능을 향상할 수 있습니다.
- 같은 타입의 데이터를 저장하므로, 데이터 압축률을 높일 수 있습니다.
파티셔닝 분할 기준
- DBMS는 분할에 대한 각종 기준을 제공하며, ‘분할 키’를 사용합니다.

- 범위 분할( Range partitioning )
- 분할 키 값이 범위 내에 있는지 여부로 구분합니다.
- ex) 우편 번호, 날짜 등 분할 키로 수평 분할하는 경우입니다.
- 목록 분할 ( List partitioning )
- 값 목록에 파티션을 할당합니다.
- ex) [한국, 일본, 중국] → 아시아, [노르웨이, 스웨덴, 핀란드] → 북유럽
- 해시 분할 ( hash partitioning )
- 해시 함수의 값에 따라 파티션 포함 여부를 결정합니다.
- ex) 4개의 파티션으로 분할하는 경우, 해시 함수는 0~3의 정수를 돌려줍니다.
- 합성 분할 ( composite partitioning )
