MySQL 5.6 リファレンスマニュアル  /  ...  /  HASH および KEY パーティションの管理

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 は、HASHKEYLINEAR 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;

User Comments
Sign Up Login You must be logged in to post a comment.