MySQL의 파티셔닝방법에는 RANGE, LIST, HASH, KEY의 4가지 방법이 제공된다.
이것은 PARTITION BY로 지정한다.
- RANGE: 지정된 컬럼 값에 의해서 파티셔닝을 한다. 컬럼명을 지정하는 경우에는 정수형이어야하고 함수식을 지정하는 경우에는 정수를 리턴하는 함수이어야 한다. 조건의 판정에는 VALUES LESS THAN를 사용한다. MAXVALUE는 최대값을 의미한다.
CREATE TABLE ptrange( a INT)
PARTITION BY RANGE(a) (
PARTITION pt0 VALUES LESS THAN ( 1000 ),
PARTITION pt1 VALUES LESS THAN MAXVALUE );
- LIST: 지정된 값에 의해서 파타셔닝을 한다. 컬럼명만을 지정하는 경우에는 정수형이어야하고 함수식을 지정하는 경우에는 정수를 리턴하는 함수이어야 한다. 조건을 지정할때에는 각 파티션정의에 VALUES IN(값 [값,...])을 사용한다.
CREATE TABLE ptlist( a INT UNSIGNED)
PARTITION BY LIST(a) (
PARTITION pt0 VALUES IN (1,4),
PARTITION pt1 VALUES IN (2,5),
PARTITION pt2 VALUES IN (3,6) );
- HASH: 지정된 값에 따라서 MySQL이 행을 자동으로 나눈다. 컬럼명만을 지정하는 경우에는 정수형이어야하고 함수식을 지정하는 경우에는 정수를 리턴하는 함수이어야 한다.
CREATE TABLE pthash(a INT, b INT, c CHAR(10) )
PARTITION BY HASH(a)
PARTITION 2;
- KEY: 지정된 값에 따라서 MySQL이 행을 자동으로 나눈다. 0개이상의 컬럼명(함수)를 지정할 수 있다. 값을 지정하지 않은 경우 테이블의 PRIMARY KEY가 자동적으로 채용된다.
CREATE TABLE ptkey(a INT, b INT, c CHAR(10) )
PARTITION BY KEY(a, b, c)
PARTITIONS 2;
CREATE TABLE ptkey( a INT PRIMARY KEY, b INT, c CHAR(10) )
PARTITION BY KEY()
PARTITIONS 2;