添加分区
ALTER TABLE v2x_olap_database.government_car
ADD PARTITION p20221203 VALUES LESS THAN ("2022-12-04");
动态分区表不能添加分区,需要转为手动分区表
查看分区
show paritions from <表名>
删除分区
alter table <表名>
drop partition <分区名>
https://doris.apache.org/zh-CN/docs/advanced/partition/dynamic-partition
CREATE TABLE IF NOT EXISTS v2x_olap_database.government_car
(
`temId` VARCHAR(20) COMMENT "mac",
`tehNo` VARCHAR(20) COMMENT "手机号",
`speed` FLOAT COMMENT "速度",
`dayMileage` FLOAT COMMENT "里程数",
`gpsTime` BIGINT COMMENT "时间戳",
`status` VARCHAR(10) COMMENT "状态",
`direction` INT COMMENT "方向",
`k1` INT COMMENT "洒水状态",
`longitude` DOUBLE COMMENT "经度",
`latitude` DOUBLE COMMENT "纬度",
`eventTime` VARCHAR(30) COMMENT "时间",
`dt` date COMMENT "日期"
)
PARTITION BY RANGE(`dt`)()
DISTRIBUTED BY HASH(`temId`) BUCKETS 10
PROPERTIES (
"replication_allocation" = "tag.location.default: 3", -- 设置副本数
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p", -- p20221129
"dynamic_partition.buckets" = "10"
);
dynamic_partition.enable:
是否开启动态分区特性,可指定为true
或false
。默认为true
。dynamic_partition.time_unit:
动态分区调度的单位,可指定为DAY
WEEK
MONTH
,当指定为DAY
时,动态创建的分区名后缀格式为yyyyMMdd
,例如- -20200325
。当指定为WEEK
时,动态创建的分区名后缀格式为yyyy_ww
即当前日期属于这一年的第几周。当指定为MONTH
时,动态创建的分区名后缀格式为yyyyMM
,例如202003
。dynamic_partition.start:
动态分区的开始时间, 以当天为基准,超过该时间范围的分区将会被删除。如果不填写,则默认为Integer.MIN_VALUE
即-2147483648
。dynamic_partition.end:
动态分区的结束时间, 以当天为基准,会提前创建N
个单位的分区范围。dynamic_partition.prefix:
动态创建的分区名前缀。dynamic_partition.buckets:
动态创建的分区所对应的分桶数量。
dynamic_partition.start
不指定不删除历史分区数据
dynamic_partition.end
通过指定预先今天以后的3个分区
历史分区
设置历史分区
alter table <表名> set ("dynamic_partition.create_history_partition" = "true")
当 create_history_partition
为 true
,即开启创建历史分区功能时,Doris 会根据 dynamic_partition.start
和 dynamic_partition.history_partition_num
来决定创建历史分区的个数。
假设需要创建的历史分区数量为 expect_create_partition_num
,根据不同的设置具体数量如下:
create_history_partition
=true
1)dynamic_partition.history_partition_num
未设置,即 -1;expect_create_partition_num
=end - start
;
2)dynamic_partition.history_partition_num
已设置expect_create_partition_num
=end - max(start, -histoty_partition_num)
;create_history_partition
=false
不会创建历史分区,expect_create_partition_num = end - 0
;
当expect_create_partition_num
大于max_dynamic_partition_num
(默认500)时,禁止创建过多分区。
注意:dynamic_partition.start
与 `expect_create_partition_num``如果未设置,则无法创建历史分区
Provide start or history_partition_num property when creating history partition
手动分区表与动态分区表切换
手动转自动
alter table <表名> set ("dynamic_partition.enable" = "true")
注意: 如果设置了 dynamic_partition.start
,则分区范围在偏移量之前的历史分区将被删除
自动转手动
alter table <表名> set ("dynamic_partition.enable" = "false")