19.3 パーティション管理

MySQL 5.6 は、パーティション化されたテーブルを変更するためにいくつかの方法を提供しています。既存のパーティションを追加、削除、再定義、マージ、または分割できます。これらのすべてのアクションは、ALTER TABLE ステートメントのパーティショニング拡張を使用して実行できます。パーティション化されたテーブルおよびパーティションに関する情報を取得する方法もあります。以降のセクションでは次のトピックについて説明します。

注記

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 BYADD PARTITIONDROP PARTITIONREORGANIZE PARTITION、または COALESCE PARTITION 句のみです。たとえば、あるパーティションを削除して、テーブルの残りのパーティションを再編成する場合は、2 つの別々の ALTER TABLE ステートメントでそうする必要があります (DROP PARTITION を使用するものと REORGANIZE PARTITIONS を使用するもの)。

MySQL 5.6 では、ALTER TABLE ... TRUNCATE PARTITION を使用して、選択した 1 つ以上のパーティションからすべての行を削除できます。


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