Versions available for this page: CUBRID 9.0.0 |
분할(partition) PROMOTE 문은 분할 테이블에서 사용자가 지정한 분할을 독립적인 일반 테이블로 승격(promote)한다. 이것은 거의 접근하지 않는 매우 오래된 데이터를 쌓아놓을(archiving) 목적으로만 유지하려 할 때 유용하다. 해당 분할을 일반 테이블로 승격함으로써 유용한 데이터는 더 적은 수의 분할을 갖게 되므로 접근 부하는 줄이고 오래된 데이터는 편리하게 보존할 수 있다.
분할 PROMOTE 문은 영역 분할(range partition) 테이블과 리스트 분할(list partition) 테이블에만 허용된다. 해시 분할 테이블은 사용자가 제어할 수 있는 방법이 없으므로 승격을 허용하지 않는다.
분할이 일반 테이블로 승격될 때 그 테이블은 오직 데이터와 비고유 로컬 인덱스만 상속받는다. 이것은 다음의 테이블 속성들이 승격된 테이블에 저장되지 않는다는 것을 의미한다.
다음 속성들은 승격된 테이블에서도 그대로 사용된다.
ALTER TABLE identifier PROMOTE PARTITION <identifier_list>
다음은 리스트 분할을 승격한 예이다.
CREATE TABLE t(i int) PARTITION BY LIST(i) (
partition p0 values in (1, 2, 3),
partition p1 values in (4, 5, 6),
partition p2 values in (7, 8, 9),
partition p3 values in (10, 11, 12)
);
ALTER TABLE t PROMOTE PARTITION p1, p2;
승격 이후 테이블 t의 파티션은 p0, p3만 가지게 되며, p1, p2는 각각 t__p__p1, t__p__p2인 테이블로 접근할 수 있다.
csql> ;schema t
=== <Help: Schema of a Class> ===
<Class Name>
t
<Sub Classes>
t__p__p0
t__p__p3
<Attributes>
i INTEGER
<Partitions>
PARTITION BY LIST ([i])
PARTITION p0 VALUES IN (1, 2, 3)
PARTITION p3 VALUES IN (10, 11, 12)
csql> ;schema t__p__p1
=== <Help: Schema of a Class> ===
<Class Name>
t__p__p1
<Attributes>
i INTEGER
다음은 범위 분할을 승격한 예이다.
CREATE TABLE t(i int, j int) PARTITION BY RANGE(i) (
PARTITION p0 VALUES LESS THAN (1),
PARTITION p1 VALUES LESS THAN (10),
PARTITION p2 VALUES LESS THAN (100),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
CREATE UNIQUE INDEX u_t_i ON t(i);
CREATE INDEX i_t_j ON t(j);
ALTER TABLE t PROMOTE PARTITION p1, p2;
승격 이후 테이블 t의 파티션은 p0, p3만 가지게 되며, p1, p2는 각각 t__p__p1, t__p__p2인 테이블로 접근할 수 있다. 승격된 테이블 t__p__p1, t__p__p2에는 기본 키, 외래 키, 고유 키 등 테이블의 일부 속성이나 인덱스가 제거된 상태라는 점에 주의한다.
csql> ;schema t
=== <Help: Schema of a Class> ===
<Class Name>
t
<Sub Classes>
t__p__p0
t__p__p3
<Attributes>
i INTEGER
j INTEGER
<Constraints>
UNIQUE u_t_i ON t (i)
INDEX i_t_j ON t (j)
<Partitions>
PARTITION BY RANGE ([i])
PARTITION p0 VALUES LESS THAN (1)
PARTITION p3 VALUES LESS THAN MAXVALUE
csql> ;schema t__p__p1
=== <Help: Schema of a Class> ===
<Class Name>
t__p__p1
<Attributes>
i INTEGER
j INTEGER
<Constraints>
INDEX idx_t_j ON t (j)