Doris中的Colocate Join是什么?

提问者:帅平 问题分类:面试刷题
Doris中的Colocate Join是什么?
2 个回答
候你多时
候你多时
Doris中的Colocate Join是一种通过数据分布协同定位来避免Shuffle的Join优化技术,其核心原理是通过预先规划表的分桶分布策略,使得关联表的数据在物理存储层面保持对齐,从而实现高效的本地化Join计算。使用示例如下:
1、建表时指定
-- 创建订单表(分桶键=order_id)
CREATE TABLE orders (
    order_id BIGINT,
    user_id INT,
    amount DECIMAL(10,2)
) DUPLICATE KEY(order_id)
DISTRIBUTED BY HASH(order_id) BUCKETS 8
PROPERTIES (
    "colocate_with" = "order_group"  -- 指定协同组名
);
-- 创建订单详情表(分桶键=order_id,与订单表一致)
CREATE TABLE order_details (
    order_id BIGINT,
    item_id INT,
    price DECIMAL(10,2)
) DUPLICATE KEY(order_id)
DISTRIBUTED BY HASH(order_id) BUCKETS 8
PROPERTIES (
    "colocate_with" = "order_group"  -- 同一协同组
);
发布于:2周前 (05-21) IP属地:
伤疤
伤疤
2、验证数据分布
-- 查看Colocate Group信息
SHOW PROC '/colocation_group';
-- 输出应显示两表在同一Group,且Buckets分布一致
3、执行join查询
-- 自动触发Colocate Join
SELECT *
FROM orders o
JOIN order_details od ON o.order_id = od.order_id
WHERE o.order_id = 1001;
发布于:2周前 (05-21) IP属地:
我来回答