MySQL 8.0 リファレンスマニュアル


24.3 パーティション管理

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

注記

パーティションテーブルのすべてのパーティションは、同じ数のサブパーティションを持つ必要があります。テーブルの作成後にサブパーティション化を変更することはできません。

テーブルパーティション化スキームを変更するには、パーティションテーブルを作成するために CREATE TABLE で使用される構文と同じ構文を持つ partition_options オプションとともに ALTER 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.9「ALTER TABLE ステートメント」 を参照してください。

重要

ALTER TABLE ステートメントに使用できるのは、単一の PARTITION BYADD PARTITIONDROP PARTITIONREORGANIZE PARTITION、または COALESCE PARTITION 句のみです。 たとえば、パーティションを削除してテーブルの残りのパーティションを再編成する場合は、(DROP PARTITION を使用してから REORGANIZE PARTITION を使用して別の ALTER TABLE ステートメントを使用して) これを行う必要があります。

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


関連キーワード:  テーブル, 管理, PARTITION, パーティショニング, TABLE, ステートメント, リファレンス, RANGE, KEY, 情報