Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 

일반 테이블을 분할 테이블로 변경

설명

일반 테이블을 분할 테이블로 변경하려면 ALTER TABLE 문을 이용한다. ALTER TABLE 문을 이용하여 세 종류의 분할 모드로 변경 가능하다. 분할 테이블로 변경하면 기존 테이블에 있던 데이터는 분할 정의에 따라 각 분할로 이동 저장된다. 일반 테이블의 데이터를 분할 테이블로 이동하는 것이므로 데이터 양에 따라 긴 작업 시간이 필요할 수 있다.

구문

ALTER {TABLE | CLASS} table_name
PARTITION BY {RANGE | HASH | LIST } ( <partition_expression> )
( PARTITION partition_name VALUES LESS THAN { MAXVALUE | ( <partition_value_option> ) }
| PARTITION partition_name VALUES IN ( <partition_value_option list) > ]
| PARTITION <UNSINGED_INTEGER> )

<partition_expression>
expression_
<partition_value_option>
literal_

  • table_name : 변경하려는 테이블의 이름을 지정한다.
  • partition_expression : 분할 표현식을 지정한다. 표현식은 분할 대상이 되는 칼럼 명을 지정하거나 함수를 사용하여 지정할 수 있다. 사용 가능한 데이터 타입과 함수에 대한 자세한 내용은 분할 표현식에 사용할 수 있는 데이터 타입을 참조한다.
  • partition_name : 분할명을 지정한다.
  • partition_value_option : 분할의 기준이 되는 값 또는 값의 목록을 지정한다.
예제

다음은 record 테이블을 영역, 리스트, 해시 분할로 각각 변경하는 예제이다.

ALTER TABLE record PARTITION BY RANGE (host_year)
( PARTITION before_1996 VALUES LESS THAN (1996),
  PARTITION after_1996 VALUES LESS THAN MAXVALUE);

ALTER TABLE record PARTITION BY list (unit)
( PARTITION time_record VALUES IN ('Time'),
  PARTITION kg_record VALUES IN ('kg'),
  PARTITION meter_record VALUES IN ('Meter'),
  PARTITION score_record VALUES IN ('Score') );

ALTER TABLE record
PARTITION BY HASH (score) PARTITIONS 4;

주의 사항
  • 분할 조건을 충족하지 않는 데이터가 존재하는 경우에는 분할이 정의되지 않는다.