上一篇我们介绍了doris的动态分区,这篇文章我们介绍下doris的临时分区。
首先,临时分区是使用在哪些场景里面呢?在这里给大家介绍下:
场景一:
原来的某一张表的某一部分分区数据有误,需要重新导入,常规的操作就是先删除掉当前分区的数据,再导入对应分区的数据。这里可以先创建一个临时分区,再向临时分区导入数据,然后用临时分区替换掉老的分区。
场景二:
有时候我们分区的粒度太小了,导致每一个分区的数据量较少,此时我们可以创建临时分区调大粒度,然后把原来的数据导入到临时分区里面去,最后再替换掉老的分区。
还有其他的一些场景,在这里暂时就不列举了。所以临时分区对于我们来说也是相当的重要的。下面我们实践一下。我们还是使用动态分区创建的表。
一、在user_login_logs表中创建一个临时分区,以月为单位
ALTER TABLE user_login_logs ADD TEMPORARY PARTITION p20221101 VALUES LESS THAN("2022-12-01 00:00:00");
二、查看下我们创建的临时分区
show TEMPORARY PARTITIONs from user_login_logs;
可以看到已经被创建了。
三、在老的分区里面查询结果,把数据插入到临时分区里面去
insert into user_login_logs TEMPORARY PARTITION(p20221101) select * from user_login_logs;
此时数据就插入到了临时分区里面。然后在临时分区里面查询下数据
select * from user_login_logs TEMPORARY PARTITION(p20221101)
数据已经进入到了临时分区里面。
四、替换掉原始的分区
替换的语法是:
ALTER TABLE user_login_logs REPLACE PARTITION (p20221109) WITH TEMPORARY PARTITION (p20221101) PROPERTIES ( "strict_range" = "false", "use_temp_partition_name" = "true" );
这个sql主要是做个样例,我们这里由于数据类型不对称,所以无法进行替换。
备注:
1、临时分区只能在分区表里面执行,非分区表不能创建临时分区。
2、临时分区的替换操作是原子性替换,所以鞥保证数据安全。
3、临时分区的名称不能和正式分区或者其他分区名称重复。
4、临时分区之间的数据范围不能出现重叠,但是临时分区的数据范围和正式分区的范围可以重叠。
还没有评论,来说两句吧...