ハッシュやキーによりパーティショニングされたテーブルの変更はパーティショニングの設定を行う際と手順が似ており、レンジやリストによりパーティショニングされたテーブルとは違いがあります。そのため、このセクションはハッシュやキーのみによりパーティショニングされたテーブルの変更に関するトピックに絞って説明をおこないます。レンジやリストによりパーティショニングされたテーブルの追加や削除については、項15.3.1. 「RANGE
と LIST
パーティションの管理」
を参照してください。
HASH
や KEY
によりパーティショニングされたテーブルを
RANGE
や LIST
によりパーティショニングされたテーブルと同じように削除することはできません。ただし、HASH
や KEY
パーティショニングは
ALTER TABLE ...COALESCE
PARTITION
コマンドを使って結合することはできます。例えば、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): Cannot remove all partitions, use DROP TABLE instead
clients
テーブル内のパーティションの数を12から18に増やす場合、ALTER
TABLE ...ADD
PARTITION
を、以下に示されるとおり使用してください。
ALTER TABLE clients ADD PARTITION PARTITIONS 6;