183. 컴포지트 파티셔닝 (Composite Partitioning) - 복합 파티셔닝
핵심 인사이트: "2024년 데이터가 10억 건이라서 서랍 1개(레인지)에 안 들어간다." 이럴 때 서랍장(Range)을 먼저 짜고, 그 서랍 하나하나를 다시 바구니(Hash 또는 List)로 잘게 쪼개는 2단 콤보 기술이 컴포지트 파티셔닝이다.
Ⅰ. 컴포지트 파티셔닝(Composite Partitioning)의 개념
대용량 테이블을 분할할 때, 하나의 파티셔닝 기법(예: 레인지)만으로는 데이터 관리가 어렵거나 파티션 크기가 너무 커질 때 두 가지 파티셔닝 기법을 결합(Main + Sub) 하여 데이터를 2단계로 잘게 쪼개는 기법입니다. 가장 일반적이고 많이 쓰이는 조합은 Range-Hash 파티셔닝과 Range-List 파티셔닝입니다.
Ⅱ. 컴포지트 파티셔닝의 구조 (2단계 분할)
[ 원본 대용량 테이블: 5년 치 전국 주문 이력 ]
│
(1단계: Main Partition - Range)
날짜 기준으로 서랍(파티션)을 먼저 나눔
┌───────────┼───────────┐
▼ ▼ ▼
[ 2023년 파티션 ] [ 2024년 파티션 ] [ 2025년 파티션 ]
│
(2단계: Sub Partition - Hash 또는 List)
2023년 서랍 안에서 지역별이나 해시로 바구니를 다시 나눔
┌──┴──┐
▼ ▼
[서울] [부산] ... (2023년_서울, 2023년_부산 서브파티션 생성)
Ⅲ. 주요 결합 방식 (조합)
1. Range-Hash 파티셔닝 (가장 대중적)
- 메인 파티션: 데이터의 이력 관리(보관 주기)를 위해 날짜(Range) 로 크게 나눕니다. (DROP PARTITION 용이)
- 서브 파티션: 특정 월에 데이터가 너무 많아 I/O 병목이 생기는 것을 막기 위해, 다시 고객번호나 주문번호를 해시(Hash) 돌려 4~8개의 디스크로 고르게 균등 분산시킵니다.
2. Range-List 파티셔닝
- 메인 파티션: 날짜(Range) 로 나눕니다.
- 서브 파티션: 각 월별 데이터 안에서 지역(서울, 부산)이나 대리점별로 관리하기 위해 명시적 리스트(List) 로 한 번 더 분할합니다.
Ⅳ. 왜 컴포지트 파티셔닝을 써야 하는가?
단일 파티셔닝의 단점을 완벽히 보완합니다.
- 해시 파티셔닝의 단점(관리 불가) 극복: 해시로만 쪼개면 옛날 데이터를 통째로 지울 수 없습니다. 하지만 Range-Hash로 구성하면 메인 파티션(Range) 단위로 옛날 년도 데이터를 1초 만에
DROP할 수 있습니다. - 레인지 파티셔닝의 단점(I/O 병목) 극복: 월말에 주문이 폭주해 특정 Range 파티션에만 I/O가 몰리는 현상을, 서브 파티션(Hash)이 여러 디스크로 분산시켜 성능을 유지합니다.
📢 섹션 요약 비유: 우체국에서 편지를 분류할 때, 일단 "도착 날짜(Range)"별로 커다란 자루에 모아둡니다. 그런데 크리스마스 날짜 자루가 너무 무거워서 들 수조차 없게 되자, 그 안에서 다시 "우편번호 끝자리(Hash)"로 작은 주머니 여러 개에 골고루 나눠 담는 완벽한 2단 분류 시스템입니다.