该语句用于对已有 table 的 partition 进行修改操作。

    这个操作是同步的,命令返回表示执行完毕。

    语法:

    1. 增加分区

    语法:

    1. partition_desc ["key"="value"]
    2. [DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]]

    注意:

    • partition_desc 支持以下两种写法
      • VALUES LESS THAN [MAXVALUE|(“value1”, …)]
      • VALUES [(“value1”, …), (“value1”, …))
    • 分区为左闭右开区间,如果用户仅指定右边界,系统会自动确定左边界
    • 如果没有指定分桶方式,则自动使用建表使用的分桶方式和分桶数。
    • 如指定分桶方式,只能修改分桶数,不可修改分桶方式或分桶列。如果指定了分桶方式,但是没有指定分桶数,则分桶数会使用默认值10,不会使用建表时指定的分桶数。如果要指定分桶数,则必须指定分桶方式。
    • [“key”=”value”] 部分可以设置分区的一些属性,具体说明见 CREATE TABLE
    1. 删除分区

    语法:

    1. DROP PARTITION [IF EXISTS] partition_name [FORCE]
    • 使用分区方式的表至少要保留一个分区。
    • 执行 DROP PARTITION 一段时间内,可以通过 RECOVER 语句恢复被删除的分区。详见 SQL手册-数据库管理-RECOVER 语句
    • 如果执行 DROP PARTITION FORCE,则系统不会检查该分区是否存在未完成的事务,分区将直接被删除并且不能被恢复,一般不建议执行此操作
    1. 修改分区属性

      语法:

    1. MODIFY PARTITION p1|(p1[, p2, ...]) SET ("key" = "value", ...)

    说明:

    • 当前支持修改分区的下列属性:
      • storage_medium
      • storage_cooldown_time
      • replication_num
      • in_memory
    • 对于单分区表,partition_name 同表名。
    1. 增加分区, 现有分区 [MIN, 2013-01-01),增加分区 [2013-01-01, 2014-01-01),使用默认分桶方式
    1. 增加分区,使用新的分桶数
    1. ALTER TABLE example_db.my_table
    2. DISTRIBUTED BY HASH(k1) BUCKETS 20;
    1. 增加分区,使用新的副本数
    1. ALTER TABLE example_db.my_table
    2. ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
    3. ("replication_num"="1");
    1. 修改分区副本数
    1. ALTER TABLE example_db.my_table
    1. 批量修改指定分区
    1. 批量修改所有分区
    1. ALTER TABLE example_db.my_table
    2. MODIFY PARTITION (*) SET("storage_medium"="HDD");
    1. 删除分区
    1. ALTER TABLE example_db.my_table
    2. DROP PARTITION p1;
    1. 增加一个指定上下界的分区