설계고급Oracle 전용
PARTITIONING
큰 테이블을 논리적으로 분할하여 관리/성능을 개선
정의
하나의 큰 테이블을 일정 기준(범위, 리스트, 해시)으로 여러 파티션으로 분할한다. 사용자 입장에서는 여전히 하나의 테이블이지만, 실제 저장과 접근은 파티션 단위로 이뤄진다. 오라클은 RANGE, LIST, HASH, INTERVAL, REFERENCE 등 다양한 파티셔닝 전략을 지원한다(Enterprise Edition 옵션).
왜 중요한가?
대용량 테이블에서 파티션 프루닝(필요 파티션만 읽기)으로 I/O를 극적으로 줄인다. 월별 RANGE 파티션은 오래된 데이터의 일괄 삭제(파티션 DROP)도 빠르게 만든다. 잘못 설계하면 의도한 프루닝이 안 일어나 성능 이득이 없다.
틀리기 쉬운 포인트
- !WHERE 절에 파티션 키 조건이 없으면 모든 파티션을 스캔합니다.
- !파티션 키에 함수를 씌우면 프루닝이 막힙니다.
- !오라클 파티셔닝은 Enterprise Edition 옵션입니다.
예시
-- Oracle 전용 CREATE TABLE sales ( id NUMBER, sale_date DATE, amount NUMBER ) PARTITION BY RANGE (sale_date) ( PARTITION p2024 VALUES LESS THAN (DATE '2025-01-01'), PARTITION p2025 VALUES LESS THAN (DATE '2026-01-01') );
성능 포인트
!WHERE 절에 파티션 키 조건이 있어야 프루닝이 작동. 파티션 키에 함수를 씌우면 프루닝이 막힌다.