2010년 9월 16일 목요일

파티셔닝3

파티셔닝의 제한

5.1.12-beta에서 다음과 같은 제한이 있다.

  • 파티셔닝된 테이블은 스토리지엔진이 같아야 된다. 
  • 외부키 제약은 사용할 수 없다. 
  • FULLTEXT인덱스를 사용할 수 없다. 
  • GIS컬럼을 사용할 수 없다. 
  • 임시테이블, MERGE스토리지엔진, CSV스토리지엔진은 파티셔닝할 수 없다. 

파티셔닝의 지정 

파티셔닝의 지정은 다음과 같이 한다.

CREATE TABLE 테이블명 (컬럼 정의) 
 PARTITION BY { [LINEAR] HASH(expr) | [LINEAR] KEY(expr) }
[ PARTITIONS 파티션갯수]


CREATE TABLE 테이블명(컬럼정의)
 PARTITION BY { RANGE(expr) | LIST(expr) }
[ SUBPARTITION BY { [LINEAR] HASH() | [LINEAR] KEY() }
    [ SUBPARTITIONS 서브파티션갯수 ]
]
(파티션정의 [, 파티션정의] ... )

파티션정의:
   PARTITION 파티션명
     [ VALUES { LESS THAN (expr) | MAXVALUE } ] <--RANGE인 경우
     [ VALUES IN (값 리스트) ]   <--LIST인 경우
     [ 테이블 옵션]
     [ TABLESPACE [=] (NDB Cluster의 테이블영역명) ]
     [ NODEGROUP [=] MySQL Cluster의 node_group_id ]
     [(서브 파티션정의 [, 서브파티션정의 ]...) ]

서브파티션정의:
   SUBPARTITION 서브파티션명
     [ 테이블옵션 ]
     [ TABLESPACE [=] (NDB Cluster의 테이블영역명) ]
     [ NODEGROUP [=] MySQL Cluster의 node_group_id ]

테이블옵션:
  보통 CREATE TABLE문에서 지정할 수 있는 ENGINE= 키워드등의 테이블옵션. 파티션정의구문에서는 다음을 사용할 수 있다.
       [STORAGE] ENGINE [=] 스토리지엔진명
       COMMENT [=] 코멘트
       DATA DIRECTORY [=] '.MYD파일의 저장디렉토리'
       INDEX DIRECTORY [=] '.MYI파일의 저장디렉토리'
      MAX_ROWS [=] '테이블에 들어가는 최대 행수'
      MIN_ROWS [=] '테이블에 들어가는 최소 행수'