Oracle 10g 강좌
Composite Range-Hash Partitioning 3 0 99,999+

by 구루비 COMPOSITE PARTITION PARTITION TABLE RANGE-HASH PARTITION 파티션 [2006.06.18]


Composite Partition 이란

  Composite Partition 은 partition 의 partitioning 입니다.

  Range-Hash Partitioning 과 Range-List Partitioning으로 구분 됩니다.

 

Composite Range-Hash Partitioning

  - Range 방식을 사용하여 데이터를 Partitioning하고 각각의 Partition 내에서 Hash 방식을 이용하여 Sub-Partitioning을 하는 방법 입니다.

  - Range와 Hash 두 Partitioning 방식의 장점을 이용하여 만든 개념 입니다.

① 파티션 테이블 생성

  - 년, 월, 일을 기준으로 데이터를 Range Partition을 하고, 2차로 sales_no 값을 Hash Partition에 의해 분리하여 데이터를 저장 합니다.

  - 실제 데이터는 년, 월, 일로 분리된 후 Hash 함수에 의해 나누어져 저장 됩니다.

  - 어떤 분류에 속하는 지만 알 수 있을 뿐 실제 저장되어 있는 Segment는 개발자나 DBA가 알 수 없습니다

 
SQL> 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) );
    

② 데이터 조작

  아래와 같이 데이터를 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을 추가한 예제 입니다.

 
SQL> ALTER TABLE sales_range_hash 
     ADD PARTITIONVALUES LESS THAN (MAXVALUE, MAXVALUE, MAXVALUE)
     SUBPARTITIONS 4
     STORE IN (ASSM_TBS1, ASSM_TBS2, ASSM_TBS3, ASSM_TBS4);
    

- 강좌 URL : http://www.gurubee.net/lecture/1912

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입