2 个回答
Doris中的Colocate Join是一种通过数据分布协同定位来避免Shuffle的Join优化技术,其核心原理是通过预先规划表的分桶分布策略,使得关联表的数据在物理存储层面保持对齐,从而实现高效的本地化Join计算。使用示例如下:
1、建表时指定
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属地:
我来回答
您需要 登录 后回答此问题!