赞
踩
Colocation Join 功能,是将一组拥有相同 CGS(Colocation Group Schema) 的 Table 组成一个 CG(Colocation Group。并保证这些 Table 对应的数据分片会落在同一个 BE 节点上。使得当 CG 内的表进行分桶列上的 Join 操作时,可以通过直接进行本地数据 Join,减少数据在节点间的传输耗时。
CREATE TABLE tbl (k1 int, v1 int sum)
DISTRIBUTED BY HASH(k1)
BUCKETS 8
PROPERTIES(
"colocate_with" = "group1"
);
SHOW PROC '/colocation_group';
GroupId:
1. 一个 Group 的全集群唯一标识
2. 前半部分为:DB ID
3. 后半部分为:group ID。
GroupName:Group 的全名。
TabletIds:该 Group 包含的 Table 的 id 列表。
BucketsNum:分桶数。
ReplicationNum:副本数。
DistCols:Distribution columns,即分桶列类型。
IsStable:该 Group 是否稳定(稳定的定义,见 Colocation 副本均衡和修复 一节)。
该命令需要 ADMIN 权限。暂不支持普通用户查看。
SHOW PROC '/colocation_group/13003.13352';
BucketIndex:分桶序列的下标。
BackendIds:分桶中数据分片所在的 BE 节点 id 列表。
ALTER TABLE tbl SET ("colocate_with" = "group2");
SHOW PROC '/colocation_group/' ;
ALTER TABLE tbl SET ("colocate_with" = "");
当对一个具有 Colocation 属性的表进行以下操作,Doris 会检查修改是否会违反 Colocation Group Schema,如果违反则会拒绝。
CREATE TABLE IF NOT EXISTS tbl1 ( `k1` date NOT NULL COMMENT "k1", `k2` int(11) NOT NULL COMMENT "k2", `v1` int(11) SUM NOT NULL COMMENT "v1" ) ENGINE=OLAP AGGREGATE KEY(`k1`, `k2`) PARTITION BY RANGE(`k1`) ( PARTITION p1 VALUES LESS THAN ('2023-02-28'), PARTITION p2 VALUES LESS THAN ('2023-03-31') ) DISTRIBUTED BY HASH(`k2`) BUCKETS 8 PROPERTIES ( "colocate_with" = "group1" );
CREATE TABLE tbl2 (
`k1` datetime NOT NULL COMMENT "k1",
`k2` int(11) NOT NULL COMMENT "k2",
`v1` double SUM NOT NULL COMMENT "v1"
) ENGINE=OLAP
AGGREGATE KEY(`k1`, `k2`)
DISTRIBUTED BY HASH(`k2`) BUCKETS 8
PROPERTIES (
"colocate_with" = "group1"
);
DESC SELECT * FROM tbl1 INNER JOIN tbl2 ON (tbl1.k2 = tbl2.k2);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。