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 [=] '테이블에 들어가는 최소 행수'