DML 计划调优:定位导入与查询性能瓶颈
调优前检查清单
在开始 DML 计划调优前,请先确认:
- 是否能清晰区分导入阶段与查询阶段的耗时。
- 是否查看过 Profile / Query Plan,定位耗时最长的算子或阶段。
- 是否已阅读导入概览,了解适配场景的导入方式。
调优定位:导入瓶颈 vs 查询瓶颈
DML(如 INSERT INTO ... SELECT)的性能瓶颈通常来自两部分。第一步是定位瓶颈所在阶段,再针对性调优。
| 瓶颈类型 | 典型表现 | 调优入口 |
|---|---|---|
| 导入阶段瓶颈 | 写入吞吐低、Sink 算子耗时高 | 参考导入概览选择合适的导入方式与最佳实践 |
| 查询阶段瓶颈 | 扫描、Join、聚合等算子耗时高 | 参考计划调优其他小节排查与调优 |
导入部分调优
Doris 支持从多种数据源导入数据。灵活运用 Doris 提供的导入功能,可以高效地将各类来源的数据导入到 Doris 中进行分析。
- 目的:根据数据来源与时效要求,选择合适的导入方式以提升 DML 整体性能。
- 入口:导入概览。
- 说明:导入方式包含 Stream Load、Broker Load、Routine Load、INSERT 等,最佳实践详情见上述链接。
查询部分调优
若瓶颈位于查询阶段,请按计划调优其他小节进行排查与优化,例如表结构优化、统计信息、Join 顺序与算子改写等。详见计划调优。
FAQ
Q1:如何快速判断 DML 慢在导入还是查询? 查看 Profile 中各算子耗时,Sink/Load 相关算子耗时高即为导入瓶颈,Scan/Join/Agg 等算子耗时高即为查询瓶颈。
Q2:INSERT INTO ... SELECT 慢,应优先看哪一部分?
建议先确认 SELECT 子查询是否慢;若 SELECT 单独执行较快,则瓶颈通常在写入侧。
Q3:是否所有导入方式都需要按相同方法调优? 不是。不同导入方式(Stream Load、Broker Load、Routine Load、INSERT 等)的调优手段不同,请参考导入概览。