Oracle/partition

partition index

pbj1102 2022. 1. 25. 11:22
반응형

파티션 인덱스(partition index)

종류

1. Partition Index 
   1) Global Partition Index
      - Global Premixed Index
      - Global Non-premixed Index => 지원  x


   2) Local Partitionn Index
      - Local Premixed Index
      - Local Non-premixed Index

2. NON Parititon Index


1. 파티션 구분
Global / Local 

1) Global
- 테이블 파티션 키와 인덱스 파티션 키가 서로 다름

2) Local
- 테이블 파티션 키와 인덱스 파티션 키가 같음


=> 파티션 테이블에서 대부분의 경우가 Local Index 성능이나, 가용성 및 관리의 용이성이 Global 보다 우수함
   ex) Global Index(premixed) 가 PK 로 설정 되어 있을 경우 
paritition drop 시 PK가 unusable 로 빠지는 현상이 발생하여 서비스(dml 작업) 중단 되는 장애가 발생됨
                > rebuild 하여 usable 만들어야함, 데이터가 많을수록 오래걸림 


2. Local Premixed Index 
 - 파티션 키 = 인덱스 파티션 키
 - premixed 
    > 파티션 키 = 인덱스 첫번째 컬럼
 - 생성시 LOCAL 구문 넣어줌 

파티션 키 = DAT
인덱스 = DAT, PRODUCT

CREATE TABLE PBJ.P_RANGE(
    DAT    CHAR(8) NOT NULL,
    NUM     CHAR(8) NOT NULL,
    PRODUCT CHAR(8) NOT NULL)
    
                PARTITION BY RANGE (DAT)
                (
                PARTITION P_08 VALUES LESS THAN ('20150832') TABLESPACE PBJ_D01,
                PARTITION P_09 VALUES LESS THAN ('20150932') TABLESPACE PBJ_D01,
                PARTITION P_10 VALUES LESS THAN ('20151032') TABLESPACE PBJ_D01,
                PARTITION P_11 VALUES LESS THAN ('20151132') TABLESPACE PBJ_D01,
                PARTITION P_12 VALUES LESS THAN ('20151232') TABLESPACE PBJ_D01,
                PARTITION P_13 VALUES LESS THAN ('20160132') TABLESPACE PBJ_D01,
                PARTITION P_14 VALUES LESS THAN ('20160232') TABLESPACE PBJ_D01,
                PARTITION P_15 VALUES LESS THAN ('20160332') TABLESPACE PBJ_D01,
                PARTITION P_16 VALUES LESS THAN ('20160432') TABLESPACE PBJ_D01
                );
 
CREATE UNIQUE INDEX PBJ.P_RANGE_PK
ON PBJ.P_RANGE (DAT, PRODUCT)
TABLESPACE PBJ_I01
LOCAL;

ALTER TABLE PBJ.P_RANGE
ADD CONSTRAINT P_RANGE PRIMARY KEY (DAT,PRODUCT) ;







3. Local Non-Premixed Index 
 - 파티션 키 = 인덱스 파티션 키
 - Non-premixed 
    > 파티션 키 = 인덱스 첫번째 컬럼과 다름 
 - 생성시 LOCAL 구문 넣어줌 


파티션 키 = DAT
인덱스 = PRODUCT, DAT


CREATE TABLE PBJ.P_RANGE(
    DAT    CHAR(8) NOT NULL,
    NUM     CHAR(8) NOT NULL,
    PRODUCT CHAR(8) NOT NULL)
    
                PARTITION BY RANGE (DAT)
                (
                PARTITION P_08 VALUES LESS THAN ('20150832') TABLESPACE PBJ_D01,
                PARTITION P_09 VALUES LESS THAN ('20150932') TABLESPACE PBJ_D01,
                PARTITION P_10 VALUES LESS THAN ('20151032') TABLESPACE PBJ_D01,
                PARTITION P_11 VALUES LESS THAN ('20151132') TABLESPACE PBJ_D01,
                PARTITION P_12 VALUES LESS THAN ('20151232') TABLESPACE PBJ_D01,
                PARTITION P_13 VALUES LESS THAN ('20160132') TABLESPACE PBJ_D01,
                PARTITION P_14 VALUES LESS THAN ('20160232') TABLESPACE PBJ_D01,
                PARTITION P_15 VALUES LESS THAN ('20160332') TABLESPACE PBJ_D01,
                PARTITION P_16 VALUES LESS THAN ('20160432') TABLESPACE PBJ_D01
                );
 
CREATE UNIQUE INDEX PBJ.P_RANGE_PK
ON PBJ.P_RANGE (PRODUCT, DAT)
TABLESPACE PBJ_I01
LOCAL;

ALTER TABLE PBJ.P_RANGE
ADD CONSTRAINT P_RANGE PRIMARY KEY  (PRODUCT, DAT) ;








4. Global Premixed Index 
 - 파티션 키 != 인덱스 키 
 - 인덱스 생성시 Global 생략 시 Global 생성됨 

파티션 키 = DAT
인덱스 키 = PRODUCT, NUM


CREATE TABLE PBJ.P_RANGE(
    DAT    CHAR(8) NOT NULL,
    NUM     CHAR(8) NOT NULL,
    PRODUCT CHAR(8) NOT NULL)
    
                PARTITION BY RANGE (DAT)
                (
                PARTITION P_08 VALUES LESS THAN ('20150832') TABLESPACE PBJ_D01,
                PARTITION P_09 VALUES LESS THAN ('20150932') TABLESPACE PBJ_D01,
                PARTITION P_10 VALUES LESS THAN ('20151032') TABLESPACE PBJ_D01,
                PARTITION P_11 VALUES LESS THAN ('20151132') TABLESPACE PBJ_D01,
                PARTITION P_12 VALUES LESS THAN ('20151232') TABLESPACE PBJ_D01,
                PARTITION P_13 VALUES LESS THAN ('20160132') TABLESPACE PBJ_D01,
                PARTITION P_14 VALUES LESS THAN ('20160232') TABLESPACE PBJ_D01,
                PARTITION P_15 VALUES LESS THAN ('20160332') TABLESPACE PBJ_D01,
                PARTITION P_16 VALUES LESS THAN ('20160432') TABLESPACE PBJ_D01
                );
 
CREATE UNIQUE INDEX PBJ.P_RANGE_PK
ON PBJ.P_RANGE (PRODUCT, NUM)
TABLESPACE PBJ_I01;

ALTER TABLE PBJ.P_RANGE
ADD CONSTRAINT P_RANGE PRIMARY KEY  (PRODUCT, NUM) ;





반응형

'Oracle > partition' 카테고리의 다른 글

PARTITION  (0) 2022.01.25