19.3.2 HASH 및 KEY 파티션 관리
해시 또는 키를 파티션 된 테이블은 파티션 설정에서 변경 사항을 서로 비슷하지만, 범위 또는 목록에 의해 분할 된 테이블과 몇 가지 점에서 다릅니다. 따라서이 섹션에서는 해시 또는 키를 파티션 된 테이블의 변경 내용 만 다룹니다. 범위 또는 목록에 의해 분할 된 테이블의 파티션을 추가 및 제거 할 내용은 섹션 19.3.1 "RANGE 및 LIST 파티션 관리" 를 참조하십시오.
HASH
또는 KEY
로 파티션 된 테이블에서 RANGE
또는 LIST
에 의해 분할 된 테이블과 동일한 방법으로 파티션을 제거 할 수 없습니다. 그러나 ALTER TABLE ... COALESCE PARTITION
문을 사용하여 HASH
또는 KEY
파티션을 병합 할 수 있습니다. 클라이언트에 대한 데이터가 포함되어있는 12 개의 분할 된 테이블이 있다고합니다. clients
테이블은 다음과 같이 정의되어 있습니다.
CREATE TABLE clients ( id INT, fname VARCHAR (30) lname VARCHAR (30) signed DATE ) PARTITION BY HASH (MONTH (signed)) PARTITIONS 12;
파티션의 수를 12 개에서 8 개로 줄일 경우 다음 ALTER TABLE
명령을 실행합니다.
mysql> ALTER TABLE clients COALESCE PARTITION 4;
Query OK, 0 rows affected (0.02 sec)
COALESCE
는 HASH
, KEY
, LINEAR HASH
또는 LINEAR KEY
로 파티션 된 테이블에서 동등하게 잘 작동합니다. 다음 예제는 이전 예제와 비슷하지만 테이블이 LINEAR KEY
에 의해 분할되는 점만이 다릅니다.
mysql>CREATE TABLE clients_lk (
->id INT,
->fname VARCHAR(30),
->lname VARCHAR(30),
->signed DATE
->)
->PARTITION BY LINEAR KEY(signed)
->PARTITIONS 12;
Query OK, 0 rows affected (0.03 sec) mysql>ALTER TABLE clients_lk COALESCE PARTITION 4;
Query OK, 0 rows affected (0.06 sec) Records : 0 Duplicates : 0 Warnings : 0
COALESCE PARTITION
뒤의 숫자는 나머지에 병합 파티션의 수입니다. 즉, 테이블에서 삭제할 파티션의 수입니다.
테이블에 들어있는 것보다 많은 파티션을 삭제하려고하면 다음과 같은 오류가 발생합니다.
mysql> ALTER TABLE clients COALESCE PARTITION 18;
ERROR 1478 (HY000) : Can not remove all partitions, use DROP TABLE instead
clients
테이블 파티션의 수를 12 개에서 18 개로 늘릴 경우 다음과 같이 ALTER TABLE ... ADD PARTITION
을 사용합니다.
ALTER TABLE clients ADD PARTITION PARTITIONS 6;