执行清空表分区后,分区的bucket数量变化了

【详述】
表分区原先的bucket数量是1,如下图:

执行完truncate table t_buz_scan_coll_new_his_sr partition (p_20220810);
执行清空分区,分区的bucket数量变成了64

t_buz_scan_coll_new_his_sr的建表语句如下:

CREATE TABLE t_buz_scan_coll_new_his_sr (
c_shh varchar(32) NULL COMMENT “商户号”,
c_hznyr date NOT NULL COMMENT “汇总年月日”,
c_ssdls varchar(32) NULL COMMENT “所属代理商”,
id bigint(20) NOT NULL COMMENT “ID”,
… …
) ENGINE=OLAP
DUPLICATE KEY(c_shh, c_hznyr)
COMMENT “扫码支付商户汇总表”
PARTITION BY RANGE(c_hznyr)
(PARTITION p_202101 VALUES [(‘2021-01-01’), (‘2021-02-01’)),
… …,
PARTITION p_202204 VALUES [(‘2022-04-01’), (‘2022-05-01’)),
PARTITION p_202205 VALUES [(‘2022-05-01’), (‘2022-06-01’)),
PARTITION p_20220601 VALUES [(‘2022-06-01’), (‘2022-06-02’)),
… …,
PARTITION p_20220809 VALUES [(‘2022-08-09’), (‘2022-08-10’)),
PARTITION p_20220810 VALUES [(‘2022-08-10’), (‘2022-08-11’)),
PARTITION p_20220811 VALUES [(‘2022-08-11’), (‘2022-08-12’)),
PARTITION p_20220821 VALUES [(‘2022-08-21’), (‘2022-08-22’)))
DISTRIBUTED BY HASH(id, c_hznyr) BUCKETS 64
PROPERTIES (
“replication_num” = “2”,
“dynamic_partition.enable” = “true”,
“dynamic_partition.time_unit” = “day”,
“dynamic_partition.time_zone” = “Asia/Shanghai”,
“dynamic_partition.start” = “-2147483648”,
“dynamic_partition.end” = “10”,
“dynamic_partition.prefix” = “p_”,
“dynamic_partition.buckets” = “1”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
);

【业务影响】:分区的bucket数量不准确
【StarRocks版本】:2.2.2-e27e2aa
【集群规模】:3fe(3 follower)+4be(3个be与fe混部)
【机器信息】CPU虚拟核/内存/网卡,40C/128G/万兆

您好,现在truncate的逻辑是删除原来的tablet,之后创建空的tablet进行swap。您建的这个动态分区bucket数量是1,truncate操作之后默认创建的空tablet数量就遵循原表默认的tablet数量了,这个是符合预期的。

1赞

在我理解,truncate 分区应该只是清空了数据,表结构的属性应该不能变化

理解您的意思,这个我们将在新的版本里面修正~