SQL ステートメントを使用してパーティションテーブルを変更する方法は多数あります。ALTER TABLE
ステートメントのパーティション化拡張を使用して、既存のパーティションを追加、削除、再定義、マージまたは分割できます。 パーティション化されたテーブルおよびパーティションに関する情報を取得する方法もあります。 以降のセクションでは次のトピックについて説明します。
RANGE
またはLIST
によってパーティション化されたテーブルのパーティション管理については、セクション24.3.1「RANGE および LIST パーティションの管理」を参照してください。HASH
およびKEY
パーティションの管理については、セクション24.3.2「HASH および KEY パーティションの管理」を参照してください。パーティション化されたテーブルおよびパーティションに関する情報を取得するために MySQL 8.0 で提供されるメカニズムについては、セクション24.3.5「パーティションに関する情報を取得する」を参照してください。
パーティションの保守操作の実行については、セクション24.3.4「パーティションの保守」を参照してください。
パーティションテーブルのすべてのパーティションは、同じ数のサブパーティションを持つ必要があります。テーブルの作成後にサブパーティション化を変更することはできません。
テーブルパーティション化スキームを変更するには、パーティションテーブルを作成するために 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 BY
、ADD PARTITION
、DROP PARTITION
、REORGANIZE PARTITION
、または COALESCE PARTITION
句のみです。 たとえば、パーティションを削除してテーブルの残りのパーティションを再編成する場合は、(DROP PARTITION
を使用してから REORGANIZE PARTITION
を使用して別の ALTER TABLE
ステートメントを使用して) これを行う必要があります。
ALTER TABLE ... TRUNCATE PARTITION
を使用して、選択した 1 つ以上のパーティションからすべての行を削除できます。