[+/-]
MySQL 5.1
はパーティショニングされたテーブルの改良方法をいくつか提供しています。存在するパーティションを追加、削除、再定義、結合、そして分離させることができます。これらのアクションの全てが
ALTER TABLE
コマンドのパーティショニング拡張によって行うことができます。
(構文の定義については項12.1.2. 「ALTER TABLE
構文」
を参照してください)パーティショニングされたテーブルやパーティションそれ自体の情報を取得する方法もあります。続くセクションでこれらのトピックを紹介します。
RANGE
や LIST
によってパーティショニングされたテーブルのパーティション管理にに関する情報については、項15.3.1. 「RANGE
と LIST
パーティションの管理」
を参照してください。
HASH
や KEY
パーティショニングの管理に関しては、項15.3.2. 「HASH
や KEY
パーティションの管理」
を参照してください。
MySQL 5.1 で提供されるパーティショニングやパーティショニングされたテーブルの収集メカニズムについては、項15.3.4. 「パーティション情報の取得」 を参照してください。
パーティションのメンテナンスを行う場合、項15.3.3. 「パーティションのメンテナンス」 を参照してください。
注
:MySQL 5.1
では、パーティショニングされたテーブルのパーティションは全て同じ数のサブパーティションを持たなければいけません。また、一度テーブルが作成されてからサブパーティションを変更することは不可能です。
ステートメント ALTER TABLE ... PARTITION BY
...
は MySQL 5.1.6 より稼動しています。MySQL
5.1
では、構文的には認められていてもステートメント事態は効果がありませんでした。
テーブルのパーティショニングスキーマを変更するには、ALTER
TABLE
コマンドを
partition_options
節と共に使用することのみがが要求されます。この節は
CREATE TABLE
のパーティショニングされたテーブルを作成するのに使用される同じ構文をもち、必ず
PARTITION BY
のキーワードで始まる。たとえば、以下のCREATE
TABLE
ステートメントを使用してレンジによりパーティショニングされたテーブルがあるとします。
CREATE TABLE trb3 (id INT, name VARCHAR(50), purchased DATE) PARTITION BY RANGE( YEAR(purchased) ) ( PARTITION p0 VALUES LESS THAN (1990), PARTITION p1 VALUES LESS THAN (1995), PARTITION p2 VALUES LESS THAN (2000), PARTITION p3 VALUES LESS THAN (2005) );
このテーブルを再度パーティショニングし、その際キーにより二つのパーティションに分けられるように、キーのベースに
id
カラム値を用い、以下のステートメントを使用してください。
ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;
これはテーブルを削除し CREATE TABLE trb3
PARTITION BY KEY(id) PARTITIONS 2;
を使用して再作成するのと同様の効果をテーブルの構成にもたらします。
重要MySQL 5.1.7 と MySQL 5.1
のりりーすでは、ALTER TABLE ... ENGINE =
...
は影響されたテーブルの全てのパーティションを取り除く動作をしました。
MySQL 5.1.8
に始まり、このステートメントはテーブルに使用されるストレージエンジンだけを変更し、テーブルのパーティショニングスキーマは保たれます。MySQL
5.1.8以降はテーブルのパーティションを取り除くには、ALTER
TABLE ... REMOVE PARTITIONING
を使用してください。詳細については項12.1.2. 「ALTER TABLE
構文」
を参照してください。