请说明在 Apache Doris 中提升查询性能的常见路径与方法,并列举几种主要的优化策略。
考察说明
考查候选人对 Doris 查询优化手段的掌握程度与实践经验。
回答思路
- 【回答框架 1】Doris 查询优化首先从模型与表结构入手:合理选择分区、分桶键和排序键,利用前缀索引和 ZoneMap 索引减少扫描量;使用稀疏索引加速点查,避免全表扫描。
- 【回答框架 2】执行计划层面:关注谓词下推、分区裁剪和列裁剪,确保过滤条件下推到存储层;对于多表 JOIN,合理选择 Join 顺序,优先过滤小表,必要时使用 Bucket Shuffle Join 或 Colocate Join 减少数据重分布。
- 【回答框架 3】查询书写上:避免 `select *`,只查必要列;合理使用物化视图和 Rollup 表匹配查询模式;对于高并发点查,可开启行缓存或利用短查询路径。
- 【回答框架 4】资源与集群调优:根据查询特点调整内存参数(如 buffer page 大小)、并行度(如 exec_mem_limit、parallel_fragment_exec_instance_num),监控并调优 Compaction 策略,避免小文件过多。
- 【关键点 1】通过数据模型设计(分区分桶、排序键)利用前缀索引减少扫描。
- 【关键点 2】利用物化视图和 Rollup 预聚合加速固定模式的查询。
- 【关键点 3】使用 Colocate Join 和 Bucket Shuffle Join 减少网络传输。
- 【关键点 4】通过谓词下推和列裁剪减少 IO 和计算量。
- 【易错点 1】不合理的分桶数或排序键设计会导致数据倾斜和索引失效。
- 【易错点 2】过度依赖物化视图可能导致存储成本增加和维护复杂度上升,需权衡收益。
- 【易错点 3】盲目增加并行度或内存可能引发资源竞争,需结合集群规模和压测调整。