Loading...
MySQL 9.5 Reference Manual 9.5의 26.3.2 Management of HASH and KEY Partitions의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
hash 또는 key로 파티션된 테이블은 파티셔닝 설정을 변경하는 관점에서 서로 매우 비슷하며, 둘 다 range 또는 list로 파티션된 테이블과는 여러 면에서 다릅니다. 이러한 이유로, 이 절에서는 hash 또는 key로 파티션된 테이블의 수정만을 다룹니다. range 또는 list로 파티션된 테이블의 파티션 추가 및 삭제에 대한 설명은 Section 26.3.1, “Management of RANGE and LIST Partitions”를 참조하십시오.
RANGE 또는 LIST로 파티션된 테이블에서처럼 동일한 방식으로 HASH 또는 KEY로 파티션된 테이블에서 파티션을 drop할 수는 없습니다. 그러나 ALTER TABLE ... COALESCE PARTITION을 사용하여 HASH 또는 KEY 파티션을 머지할 수 있습니다. 예를 들어, 클라이언트에 대한 데이터를 포함하는 clients 테이블이 다음과 같이 생성되어 12개의 파티션으로 나뉘어 있다고 가정합니다:
1CREATE TABLE clients ( 2 id INT, 3 fname VARCHAR(30), 4 lname VARCHAR(30), 5 signed DATE 6) 7PARTITION BY HASH( MONTH(signed) ) 8PARTITIONS 12;
파티션 수를 12개에서 8개로 줄이려면 다음 ALTER TABLE statement를 실행합니다:
1mysql> ALTER TABLE clients COALESCE PARTITION 4; 2Query OK, 0 rows affected (0.02 sec)
COALESCE는 HASH, KEY, LINEAR HASH, LINEAR KEY로 파티션된 테이블에서도 동일하게 잘 동작합니다. 다음은 이전 예제와 비슷하지만, 테이블이 LINEAR KEY로 파티션된 점만 다른 예제입니다:
1mysql> CREATE TABLE clients_lk ( 2 -> id INT, 3 -> fname VARCHAR(30), 4 -> lname VARCHAR(30), 5 -> signed DATE 6 -> ) 7 -> PARTITION BY LINEAR KEY(signed) 8 -> PARTITIONS 12; 9Query OK, 0 rows affected (0.03 sec) 10 11mysql> ALTER TABLE clients_lk COALESCE PARTITION 4; 12Query OK, 0 rows affected (0.06 sec) 13Records: 0 Duplicates: 0 Warnings: 0
COALESCE PARTITION 뒤에 오는 숫자는 나머지 파티션과 머지할 파티션의 개수입니다. 다시 말해, 테이블에서 제거할 파티션의 개수입니다.
테이블에 존재하는 것보다 더 많은 파티션을 제거하려고 시도하면 다음과 같은 에러가 발생합니다:
1mysql> ALTER TABLE clients COALESCE PARTITION 18; 2ERROR 1478 (HY000): Cannot remove all partitions, use DROP TABLE instead
clients 테이블의 파티션 수를 12개에서 18개로 늘리려면 다음과 같이 ALTER TABLE ... ADD PARTITION을 사용합니다:
1ALTER TABLE clients ADD PARTITION PARTITIONS 6;
26.3.1 Management of RANGE and LIST Partitions
26.3.3 Exchanging Partitions and Subpartitions with Tables