파티션
- 파티션을 사용하면 대량 추가/변경/삭제 작업을 빠르게 처리할 수 있음
- 파티셔닝은 테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도의 세그먼트에 나눠서 저장하는 것
- 관리적 측면 : 파티션 단위 백업, 추가, 삭제, 변경 → 가용성 향상
- 성능적 측면 : 파티션 단위 조회 및 DML, 경합 또는 부하 분산
Range 파티션
- 가장 기초적인 방식으로 주로 날짜 컬럼을 기준으로 시계열에 따라 파티셔닝
create 주문 ( 주문번호 number, 주문일자 varchar2(8), 고객ID varchar2(5),
배송일자 varchar2(8), 주문금액 number ... )
partition by range(주문일자) (
partition by P2020_Q1 value less than ('20200101')
,partition by P2020_Q2 value less than ('20200201')
,partition by P2020_Q3 value less than ('20200301')
,partition by P2020_Q4 value less than ('20200401')
,partition by P2020_Q5 value less than ('20200501')
,partition by P2020_Q6 value less than ('20200601')
,partition by P2020_Q7 value less than ('20200701')
,partition by P2020_Q8 value less than ('20200801')
,partition by P2020_Q9 value less than ('20200901')
,partition by P2020_Q10 value less than ('20201001')
,partition by P2020_Q11 value less than ('20201101')
,partition by P2020_Q12 value less than (MAXVALUE) -- 주문일자 >= '20201101'
)
- 주문일자 컬럼을 기준으로 월단위 파티셔닝
- 각 레코드를 파티션 키 값에 따라 분할하여 저장하며, 조회를 할 때에도 검색 조건을 만족하는 파티셔만 골라서 읽을 수 있어서 성능 향상에 도움을 줌 (읽지 않아도 되는 파티션 세그먼트를 액세스 대상에서 제외)
select *
from 주문
where 주문일자 >= '20200101'
and 주문일자 < '20200501'
- 주문 테이블을 전부 Full Scan하지 않고 P2020_Q2, P2020_Q3, P2020_Q4, P2020_Q5 파티션에만 액세스하면 됨