Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


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

このページは機械翻訳したものです。

24.3.2 HASH および KEY パーティションの管理

ハッシュまたはキーによってパーティション化されたテーブルは、パーティショニングセットアップで変更に関して互いによく似ていますが、範囲またはリストによってパーティション化されたテーブルとはいくつかの点で異なります。 このため、このセクションではハッシュまたはキーによってパーティション化されたテーブルの変更についてのみ取り上げます。 範囲またはリストによってパーティション化されたテーブルのパーティションを追加および削除することについては、セクション24.3.1「RANGE および LIST パーティションの管理」を参照してください。

HASH または KEY によってパーティション化されたテーブルから、RANGE または LIST によってパーティション化されたテーブルと同じ方法でパーティションを削除することはできません。 ただし、ALTER TABLE ... COALESCE PARTITION を使用して HASH または KEY パーティションをマージできます。 クライアントに関するデータを含む clients テーブルが、次に示すように作成された 12 個のパーティションに分割されているとします:

Press CTRL+C to copy
CREATE TABLE clients ( id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE ) PARTITION BY HASH( MONTH(signed) ) PARTITIONS 12;

パーティション数を 12 から 8 に減らすには、次の ALTER TABLE ステートメントを実行します:

Press CTRL+C to copy
mysql> ALTER TABLE clients COALESCE PARTITION 4; Query OK, 0 rows affected (0.02 sec)

COALESCE は、HASHKEYLINEAR HASH、または LINEAR KEY によってパーティション化されたテーブルで同等に適切に動作します。 次の例は前の例と似ていますが、テーブルが LINEAR KEY によってパーティション化されている点のみが異なります。

Press CTRL+C to copy
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 のあとの数値は、残りにマージするパーティションの数です。つまり、テーブルから削除するパーティションの数です。

テーブルにあるよりも多くのパーティションを削除しようとすると、次のようなエラーが発生します:

Press CTRL+C to copy
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 を使用します:

Press CTRL+C to copy
ALTER TABLE clients ADD PARTITION PARTITIONS 6;