Doris的查询并行度如何控制?

提问者:帅平 问题分类:面试刷题
Doris的查询并行度如何控制?
4 个回答
剪段光缓缓流淌
剪段光缓缓流淌
操作上的并行度控制:
#Scan操作并行度
-- 设置单个BE节点上每个Scan任务的线程数(默认1)
SET doris_scan_range_max_thread = 8;
# Join操作并行策略
-- 启用多阶段并行Join(默认false)
SET enable_parallel_join = true;
-- 设置Join分片数
SET parallel_join_instance_num = 16;
发布于:2周前 (05-22) IP属地:
今夜星满天
今夜星满天
表级别查询并行度控制:
#设置分桶策略,分桶数建议​:单表总分桶数 = BE节点数 × 并行实例数 × 2(如10节点×8实例→160-200桶)
CREATE TABLE sales (
    dt DATE,
    product_id INT,
    amount DECIMAL
) DISTRIBUTED BY HASH(product_id) BUCKETS 32  -- 分桶数影响并行度
#设置分区裁剪,仅扫描匹配分区的数据,减少参与计算的节点数
-- 按日期分区,查询时自动过滤无关分区
PARTITION BY RANGE(dt) (
    PARTITION p202401 VALUES [('2024-01-01'), ('2024-02-01'))
)
发布于:2周前 (05-22) IP属地:
樱花下的编程者
樱花下的编程者
通过资源组进行并行度控制:
#创建资源组
-- 创建资源组并限制并发查询数
CREATE RESOURCE GROUP rg_bi 
PROPERTIES (
  "concurrency_limit" = "20",    -- 最大并发查询数
  "cpu_share" = "500"            -- CPU权重
);
#绑定用户/角色
-- 用户级绑定
ALTER USER 'user1' SET RESOURCE GROUP rg_bi;
-- 角色级绑定
ALTER ROLE 'bi_role' SET RESOURCE GROUP rg_bi;
发布于:2周前 (05-22) IP属地:
蓝鲸少女与猫
蓝鲸少女与猫
全局的并行度控制措施有:
1、分片实例数
-- 设置每个Fragment的并行实例数(默认1)单个查询的每个执行阶段(如Scan、Agg、Join)在单个BE节点上的并发线程数,通常设为BE节点CPU核数的50%~80%(如16核设为8~12)
SET parallel_fragment_exec_instance_num = 4;
2、执行线程池
#BE配置参数​(be.conf),总线程数 = BE节点数 × fragment_pool_thread_num,需小于系统线程限制
fragment_pool_thread_num = 64  # 单个BE节点最大执行线程数
发布于:2周前 (05-22) IP属地:
我来回答