파티션

- 파티션을 사용하면 대량 추가/변경/삭제 작업을 빠르게 처리할 수 있음

- 파티셔닝은 테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도의 세그먼트에 나눠서 저장하는 것

- 관리적 측면 : 파티션 단위 백업, 추가, 삭제, 변경 → 가용성 향상

- 성능적 측면 : 파티션 단위 조회 및 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 파티션에만 액세스하면 됨