版本:2.0.12
有个表是分区表,按天分区,每个分区32个分桶(左表,已存在,没有设置cg)。有个需求需要关联另外一个张表(右表,表还未创建)。在左表已经存在的情况下,如果我要实现colocated join,那么需要对左表设置cg,如下命令会触发表数据移动吗?
ALTER TABLE xxx SET ("colocate_with" = "group2");
版本:2.0.12
有个表是分区表,按天分区,每个分区32个分桶(左表,已存在,没有设置cg)。有个需求需要关联另外一个张表(右表,表还未创建)。在左表已经存在的情况下,如果我要实现colocated join,那么需要对左表设置cg,如下命令会触发表数据移动吗?
ALTER TABLE xxx SET ("colocate_with" = "group2");
在 Apache Doris 中,当你对一个已经存在的表设置 Colocation Group(CG)属性时,Doris 会检查该表的 Schema 是否符合目标 Colocation Group 的要求。如果符合,Doris 会将表加入到指定的 Colocation Group 中。
对于你的问题,执行以下命令:
ALTER TABLE xxx SET ("colocate_with" = "group2");
如果表 xxx 之前没有指定过 Colocation Group,Doris 会检查该表的 Schema 是否符合 group2 的要求。如果符合,Doris 会将表 xxx 加入到 group2 中(如果 group2 不存在,则会创建它)。
如果表 xxx 之前已经指定了其他 Colocation Group,Doris 会先将表从原有的 Colocation Group 中移除,然后再将其加入到 group2 中。
在这个过程中,不会触发表数据的移动。Doris 只是将表的元数据信息更新为属于新的 Colocation Group,而不会对实际的数据进行重新分布或移动。
因此,可以放心地执行这个命令,不会导致数据移动(最好实测看看)。不过,建议在执行之前,确保目标 Colocation Group 的 Schema 与表 xxx 的 Schema 兼容,以避免不必要的错误。