MySQL 5.6 は、パーティション化されたテーブルを変更するためにいくつかの方法を提供しています。既存のパーティションを追加、削除、再定義、マージ、または分割できます。これらのすべてのアクションは、ALTER TABLE
ステートメントのパーティショニング拡張を使用して実行できます。パーティション化されたテーブルおよびパーティションに関する情報を取得する方法もあります。以降のセクションでは次のトピックについて説明します。
RANGE
またはLIST
によってパーティション化されたテーブルのパーティション管理については、セクション19.3.1「RANGE および LIST パーティションの管理」を参照してください。HASH
およびKEY
パーティションの管理については、セクション19.3.2「HASH および KEY パーティションの管理」を参照してください。パーティション化されたテーブルおよびパーティションに関する情報を取得するために MySQL 5.6 で提供されるメカニズムについては、セクション19.3.5「パーティションに関する情報を取得する」を参照してください。
パーティションの保守操作の実行については、セクション19.3.4「パーティションの保守」を参照してください。
MySQL 5.6 では、パーティション化されたテーブルのすべてのパーティションに同じ数のサブパーティションが必要であり、テーブルが作成されたあとにサブパーティショニングを変更することはできません。
テーブルのパーティショニングスキームを変更するために必要なことは、partition_options
句付きで ALTER TABLE
ステートメントを使用することだけです。この句の構文は、パーティション化されたテーブルを作成する 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
カラム値を使用する 2 つのパーティションに分割するために、次のステートメントを使用できます。
ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;
これは、テーブルを削除してから CREATE TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;
を使用して再作成する場合と同じ効果を、テーブルの構造に対して持ちます。
ALTER TABLE ... ENGINE = ...
は、テーブルによって使用されるストレージエンジンのみを変更し、テーブルのパーティショニングスキームはそのままにします。テーブルのパーティショニングを削除するには、ALTER TABLE ... REMOVE PARTITIONING
を使用します。セクション13.1.7「ALTER TABLE 構文」を参照してください。
ALTER TABLE
ステートメントに使用できるのは、単一の PARTITION BY
、ADD PARTITION
、DROP PARTITION
、REORGANIZE PARTITION
、または COALESCE PARTITION
句のみです。たとえば、あるパーティションを削除して、テーブルの残りのパーティションを再編成する場合は、2 つの別々の ALTER TABLE
ステートメントでそうする必要があります (DROP PARTITION
を使用するものと REORGANIZE PARTITIONS
を使用するもの)。
MySQL 5.6 では、ALTER TABLE ... TRUNCATE PARTITION
を使用して、選択した 1 つ以上のパーティションからすべての行を削除できます。