5.5. Composite Partition 이란
- Composite Partition 은 partition 의 partitioning 입니다.
- Range-Hash Partitioning 과 Range-List Partitioning으로 구분 됩니다.
5.5.1 Composite Range-Hash Partitioning
- Range 방식을 사용하여 데이터를 Partitioning하고 각각의 Partition 내에서 Hash 방식을 이용하여 Sub-Partitioning을 하는 방법 입니다.
- Range와 Hash 두 Partitioning 방식의 장점을 이용하여 만든 개념 입니다.
① 파티션 테이블 생성
CREATE TABLE sales_range_hash
(sales_no NUMBER,
sale_year INT NOT NULL,
sale_month INT NOT NULL,
sale_day INT NOT NULL,
customer_name VARCHAR2(30),
price NUMBER)
PARTITION BY RANGE (sale_year, sale_month, sale_day)
SUBPARTITION BY HASH(sales_no)
SUBPARTITIONS 4
STORE IN (ASSM_TBS1, ASSM_TBS2, ASSM_TBS3, ASSM_TBS4)
(PARTITION sales_q1 VALUES LESS THAN (2005, 01, 01),
PARTITION sales_q2 VALUES LESS THAN (2005, 07, 01),
PARTITION sales_q3 VALUES LESS THAN (2006, 01, 01),
PARTITION sales_q4 VALUES LESS THAN (2006, 07, 01) );
|
- 년, 월, 일을 기준으로 데이터를 Range Partition을 하고, 2차로 sales_no 값을 Hash Partition에 의해 분리
하여 데이터를 저장 합니다.
- 실제 데이터는 년, 월, 일로 분리된 후 Hash 함수에 의해 나누어져 저장 됩니다.
- 어떤 분류에 속하는 지만 알 수 있을 뿐 실제 저장되어 있는 Segment는 개발자나 DBA가 알 수 없습니다
② 데이터 조작
아래와 같이 데이터를 INSERT 하고 저장된 데이터를 확인해 봅니다.
INSERT INTO sales_range_hash VALUES(1, 2004, 06, 12, ’scott’, 2500);
INSERT INTO sales_range_hash VALUES(2, 2005, 06, 17, ’jones’, 4300);
INSERT INTO sales_range_hash VALUES(3, 2005, 12, 12, ’miller’, 1200);
INSERT INTO sales_range_hash VALUES(4, 2006, 06, 22, ’ford’, 5200);
INSERT INTO sales_range_hash VALUES(5, 2005, 01, 01, ’lion’, 2200);
COMMIT;
|
데이터가 아래와 같이 범위 분할 방식으로 나누어진 것을 확인 할 수 있습니다.
SELECT sales_no from sales_range_hash PARTITION (sales_q1); --> 1
SELECT sales_no from sales_range_hash PARTITION (sales_q2); --> 2, 5
SELECT sales_no from sales_range_hash PARTITION (sales_q3); --> 3
SELECT sales_no from sales_range_hash PARTITION (sales_q4); --> 4
|
③ 파티션 추가
sales_range_hash 테이블에 sales_q5 Range-Hash Partition을 추가한 예제 입니다.
ALTER TABLE sales_range_hash ADD PARTITION sales_q5
VALUES LESS THAN (MAXVALUE, MAXVALUE, MAXVALUE)
SUBPARTITIONS 4
STORE IN (ASSM_TBS1, ASSM_TBS2, ASSM_TBS3, ASSM_TBS4);
|
좀 더 자세한 파티션 관리는 오라클 문서의 파티션 관리 표를 참고 하시기 바랍니다.
http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10739/partiti.htm#i1007638
|