ALTER TABLE PARTITION
デスクリプション
この文は、パーティションを持つTableを変更するために使用されます。
この操作は同期的であり、コマンドの戻りは実行の完了を示します。
grammar:
ALTER TABLE [database.]table alter_clause;
partition の alter_clause は以下の変更方法をサポートしています
- partition の追加
文法:
ADD PARTITION [IF NOT EXISTS] partition_name
partition_desc ["key"="value"]
[DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]]
注意:
- partition_descは以下の2つの記述方法をサポートします
- VALUES LESS THAN [MAXVALUE|("value1", ...)]
- VALUES [("value1", ...), ("value1", ...))
- パーティションは左閉右開です。ユーザーが右境界のみを指定した場合、システムが自動的に左境界を決定します
- バケット方法が指定されていない場合、Table作成時に使用されたバケット方法とバケット数が自動的に使用されます
- バケット方法が指定されている場合、バケット数のみ変更可能で、バケット方法やバケット列は変更できません。バケット方法が指定されているがバケット数が指定されていない場合、Table作成時に指定された数値ではなく、デフォルト値
10がバケット数として使用されます。バケット数を変更する場合は、バケット方法を同時に指定する必要があります。 - ["key"="value"]セクションでは、パーティションの属性を設定できます。CREATE TABLEを参照してください
- Table作成時にユーザーが明示的にパーティションを作成していない場合、ALTERによるパーティション追加はサポートされません
- ユーザーがlist partitionを使用している場合、Tableにdefault partitionを追加できます。default partitionは、既存のパーティションキーの制約を満たさないすべてのデータを格納します。
- ALTER TABLE table_name ADD PARTITION partition_name
- パーティションの削除
文法:
DROP PARTITION [IF EXISTS] partition_name [FORCE]
注意:
- パーティショニングを使用するTableには、少なくとも1つのパーティションを予約する必要があります。
- DROP PARTITIONを実行してから一定期間後、削除されたパーティションはRECOVER文を通じて復旧できます。詳細については、SQLマニュアル - データベース管理 - RECOVER文を参照してください
- DROP PARTITION FORCEを実行すると、システムはパーティション内に未完了のトランザクションがあるかどうかをチェックせず、パーティションが直接削除され、復旧できません。この操作は一般的に推奨されません
- パーティションプロパティの変更
文法:
MODIFY PARTITION p1|(p1[, p2, ...]) SET ("key" = "value", ...)
説明:
- 現在、パーティションの以下のプロパティの変更をサポートしています:
- storage_medium -storage_cooldown_time
- replication_num
- in_memory
- 単一パーティションTableの場合、partition_nameはTable名と同じです。
Example
- パーティションを追加、既存パーティション [MIN, 2013-01-01)、パーティション [2013-01-01, 2014-01-01) を追加、デフォルトのバケット方式を使用
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2014-01-01");
- パーティションを増加し、新しいバケット数を使用する
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
DISTRIBUTED BY HASH(k1) BUCKETS 20;
- パーティションを増加し、新しいレプリカ数を使用する
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
("replication_num"="1");
- パーティションレプリカ数の変更
ALTER TABLE example_db.my_table
MODIFY PARTITION p1 SET("replication_num"="1");
- 指定されたパーティションをバッチ変更する
ALTER TABLE example_db.my_table
MODIFY PARTITION (p1, p2, p4) SET("replication_num"="1");
- 全パーティションの一括変更
ALTER TABLE example_db.my_table
MODIFY PARTITION (*) SET("storage_medium"="HDD");
- パーティションの削除
ALTER TABLE example_db.my_table
DROP PARTITION p1;
- パーティションの一括削除
ALTER TABLE example_db.my_table
DROP PARTITION p1,
DROP PARTITION p2,
DROP PARTITION p3;
- 上限と下限を指定してパーティションを追加する
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES [("2014-01-01"), ("2014-02-01"));
Keywords
ALTER, TABLE, PARTITION, ALTER TABLE