Apache Doris Colocate Join原理实践教程
发布时间:2023-02-17 12:58:39 所属栏目:Apache 来源:互联网
导读:我们都知道 Join 的常见连接类型分为以下几种: INNER JOIN OUTER JOIN CROSS JOIN SEMI JOIN ANTI JOIN Join 的常见算法实现包含以下几种: Nested Loop Join Sort Merge Join Hash Join 分布式系统实现 Join 数据分布的常见策略有: Shuffle Join Broadcas
`value` varchar(8) COMMENT "" ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 10 PROPERTIES ( "colocate_with" = "t1" ); CREATE TABLE `t2` ( `id` int(11) COMMENT "", `value` varchar(8) COMMENT "" ) ENGINE=OLAP DUPLICATE KEY(`id`) DISTRIBUTED BY HASH(`id`) BUCKETS 10 PROPERTIES ( "colocate_with" = "t1" ); Colocate Join 目前限制 Colocate Table 必须是 OLAP 类型的表 colocate_with 属性相同表的 BUCKET 数必须一样 colocate_with 属性相同表的 副本数必须一样 (这个限制之后可能会去掉,但对用户应该没有实际影响) colocate_with 属性相同表的 DISTRIBUTED Columns 的数据类型必须一样 Colocate Join 适用场景 Colocate Join 十分适合几张表按照相同字段分桶,并高频根据相同字段 Join 的场景,比如电商的不少应用都按照商家 Id 分桶,并高频按照商家 Id 进行 Join。 Colocate Join FAQ 一句话总结,凡是不能进行 Colocate Join 的场景都会自动退化为原始的 Shuffle Join 或者 Broadcast Join。 ![]() Q1: 支持多张表进行 Colocate Join 吗? A: 支持 Q2: 支持 Colocate 表和正常表 Join 吗? A: 支持 Q3: Colocate 表支持用非分桶的 Key 进行 Join 吗? A: 支持:不符合 Colocate Join 条件的 Join 会使用 Shuffle Join 或 Broadcast Join Q4: 如何确定 Join 是按照 Colocate Join 执行的? A: explain 的结果中 Hash Join 的孩子节点如果直接是 OlapScanNode, 没有 Exchange Node,就说明是 Colocate Join (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |