파티션 인덱스(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) ;