ALTER-TABLE-PARTITION
Name
ALTER TABLE PARTITION
Description
该语句用于对已有 table 的 partition 进行修改操作。
这个操作是同步的,命令返回表示执行完毕。
语法:
1. ALTER TABLE [database.]table alter_clause;
partition 的 alter_clause 支持如下几种修改方式
- 增加分区
语法:
1. ADD PARTITION [IF NOT EXISTS] partition_name
2. partition_desc ["key"="value"]
3. [DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]]
注意:
- partition_desc 支持以下两种写法
- VALUES LESS THAN [MAXVALUE|(“value1”, …)]
- VALUES [(“value1”, …), (“value1”, …))
- 分区为左闭右开区间,如果用户仅指定右边界,系统会自动确定左边界
- 如果没有指定分桶方式,则自动使用建表使用的分桶方式和分桶数。
- 如指定分桶方式,只能修改分桶数,不可修改分桶方式或分桶列。如果指定了分桶方式,但是没有指定分桶数,则分桶数会使用默认值10,不会使用建表时指定的分桶数。如果要指定分桶数,则必须指定分桶方式。
- [“key”=”value”] 部分可以设置分区的一些属性,具体说明见 CREATE TABLE
-
如果建表时用户未显式创建Partition,则不支持通过ALTER的方式增加分区
-
删除分区
语法:
1. DROP PARTITION [IF EXISTS] partition_name [FORCE]
注意:
- 使用分区方式的表至少要保留一个分区。
- 执行 DROP PARTITION 一段时间内,可以通过 RECOVER 语句恢复被删除的分区。详见 SQL手册-数据库管理-RECOVER 语句
-
如果执行 DROP PARTITION FORCE,则系统不会检查该分区是否存在未完成的事务,分区将直接被删除并且不能被恢复,一般不建议执行此操作
-
修改分区属性
语法:
1. MODIFY PARTITION p1|(p1[, p2, ...]) SET ("key" = "value", ...)
说明:
- 当前支持修改分区的下列属性:
- storage_medium
- storage_cooldown_time
- replication_num
- in_memory
- 对于单分区表,partition_name 同表名。
Example
- 增加分区, 现有分区 [MIN, 2013-01-01),增加分区 [2013-01-01, 2014-01-01),使用默认分桶方式
1. ALTER TABLE example_db.my_table
2. ADD PARTITION p1 VALUES LESS THAN ("2014-01-01");
- 增加分区,使用新的分桶数
1. ALTER TABLE example_db.my_table
2. ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
3. DISTRIBUTED BY HASH(k1) BUCKETS 20;
- 增加分区,使用新的副本数
1. ALTER TABLE example_db.my_table
2. ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
3. ("replication_num"="1");
- 修改分区副本数
1. ALTER TABLE example_db.my_table
2. MODIFY PARTITION p1 SET("replication_num"="1");
- 批量修改指定分区
1. ALTER TABLE example_db.my_table
2. MODIFY PARTITION (p1, p2, p4) SET("in_memory"="true");
- 批量修改所有分区
1. ALTER TABLE example_db.my_table
2. MODIFY PARTITION (*) SET("storage_medium"="HDD");
- 删除分区
1. ALTER TABLE example_db.my_table
2. DROP PARTITION p1;
- 增加一个指定上下界的分区
1. ALTER TABLE example_db.my_table
2. ADD PARTITION p1 VALUES [("2014-01-01"), ("2014-02-01"));
Keywords
1. ALTER, TABLE, PARTITION, ALTER TABLE
