请阐述 Apache Doris 的并行查询执行流程,并说明调整查询并行度(如 parallelism)对查询性能有哪些影响?
考察说明
考查对 Doris 分布式查询引擎并行执行模型的理解及性能调优能力。
回答思路
- 【回答框架 1】Doris 的并行查询基于 MPP 架构,查询被拆分为多个 PlanFragment,由多个 BE 节点并行执行,每个 Fragment 内部又通过多线程实现算子级并行。
- 【回答框架 2】并行度主要由两个层面决定:节点间并行,通过数据分片(tablet)在多个 BE 间分布执行;节点内并行,通过设置并行度参数(如 parallel_fragment_exec_instance_num)控制单个 BE 上并行执行的实例数。
- 【回答框架 3】提高并行度能够更充分地利用多核 CPU 和 IO 资源,缩短查询响应时间,尤其对扫描、聚合、Join 等重算子效果明显。但并行度过高会带来调度开销、网络竞争和内存压力,可能导致性能下降。
- 【回答框架 4】实际调优需结合集群规模、数据分布、查询复杂度,通过压测确定最优并行度,并关注 CPU 使用率、内存使用和查询延迟等指标。
- 【关键点 1】Doris 查询执行采用 MPP 架构,多节点并行执行查询计划。
- 【关键点 2】并行度包括节点间并行(数据分片)和节点内并行(实例数)。
- 【关键点 3】适当提升并行度可显著提升查询性能,但过高会引发资源竞争和性能回退。
- 【关键点 4】调优需结合资源状况和压测,不能盲目设置。
- 【易错点 1】盲目增大并行度不一定提升性能,可能因线程切换和网络开销导致下降。
- 【易错点 2】忽略内存限制,并行度过高可能导致 OOM 或内存溢出。
- 【易错点 3】未区分节点间和节点内并行,调优方向错误。