StarRocks数据分区之临时分区

可以在一张已经定义分区规则的分区表上,创建临时分区,并为这些临时分区设定单独的数据分布策略。在原子覆盖写操作或调整分区分桶策略时候,您可以将临时分区作为临时可用的数据载体。您可以为临时分区设定的数据分布策略包括分区范围、分桶数、以及部分属性,例如副本数、存储介质

应用场景

在以下应用场景中,可以使用临时分区功能:

  • 原子覆盖写操作

    如果需要重写某一正式分区的数据,同时保证重写过程中可以查看数据,可以先创建一个对应的临时分区,将新的数据导入到临时分区后,通过替换操作,原子地替换原有正式分区,生成新正式分区。

  • 调整分区数据的查询并发

    如果需要修改某一正式分区的分桶数,可以先创建一个对应分区范围的临时分区,并指定新的分桶数,然后通过 INSERT INTO 命令将原有正式分区的数据导入到临时分区中,通过替换操作,原子地替换原有正式分区,生成新正式分区。

  • 修改分区策略

    如果希望修改正式分区的分区范围,例如合并多个小分区为一个大分区,或将一个大分区分割成多个小分区,可以先建立对应合并或分割后范围的临时分区,然后通过 INSERT INTO 命令将原有正式分区的数据导入到临时分区中,通过替换操作,原子地替换原有正式分区,生成新正式分区。

创建临时分区

语法

  • 创建一个临时分区
ALTER TABLE <table_name> 
ADD TEMPORARY PARTITION <temporary_partition_name> VALUES [("value1"), {MAXVALUE|("value2")})]
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];

或者

ALTER TABLE <table_name> 
ADD TEMPORARY PARTITION <temporary_partition_name> VALUES LESS THAN {MAXVALUE|(<"value">)}
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];
  • 批量创建临时分区
ALTER TABLE <table_name>
ADD TEMPORARY PARTITIONS START ("value1") END ("value2") EVERY {(INTERVAL <num> <time_unit>)|<num>}
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];

示例

在 site_access 表中创建临时分区 tp1, 使用 VALUES [(…),(…)) 语法指定其临时分区范围为 [2020-01-01, 2020-02-01)

ALTER TABLE site_access
ADD TEMPORARY PARTITION tp1 VALUES [("2020-01-01"), ("2020-02-01"));

在 site_access 表中创建临时分区 tp2,使用 VALUES LESS THAN (…) 语法指定其临时分区的上界为 2020-03-01。StarRocks 会将前一个临时分区的上界作为该临时分区的下界,生成一个左闭右开的临时分区,其范围为 [2020-02-01, 2020-03-01)

ALTER TABLE site_access
ADD TEMPORARY PARTITION tp2 VALUES LESS THAN ("2020-03-01");

在 site_access 表中创建临时分区 tp3,使用 VALUES LESS THAN (…) 语法指定其临时分区的上界为 2020-04-01 并且指定临时分区的副本数为 1,分桶数为 5。

ALTER TABLE site_access
ADD TEMPORARY PARTITION tp3 VALUES LESS THAN ("2020-04-01")
 ("replication_num" = "1")
DISTRIBUTED BY HASH (site_id);

在 site_access 表中批量创建临时分区,使用 START (…) END (…) EVERY (…) 语法指定批量创建的临时分区范围为 [2020-04-01, 2021-01-01),分区粒度是一个月。

ALTER TABLE site_access 
ADD TEMPORARY PARTITIONS START ("2020-04-01") END ("2021-01-01") EVERY (INTERVAL 1 MONTH);

注意事项

  • 临时分区的分区列和原有正式分区相同,且不可修改。
  • 临时分区的分区名称不能和正式分区以及其他临时分区重复。
  • 一张表所有临时分区之间的分区范围不可重叠,但临时分区的范围和正式分区范围可以重叠。
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值