news 2026/9/2 6:36:14

Apache Doris 4.0.8 慢查询排障(第 10 篇):同一条 SQL 突然变慢,真凶为什么常在数据与资源

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache Doris 4.0.8 慢查询排障(第 10 篇):同一条 SQL 突然变慢,真凶为什么常在数据与资源

同一条 SQL 上午 800ms,下午 18 秒。执行计划文本几乎没变,团队开始改写子查询、加 Hint、调并行度。真正的变化是当天一个渠道占了 78% 数据,单个 Scan 实例和 Join 分区拖住了整个查询。

SQL 决定逻辑,数据分布和运行时资源决定成本。EXPLAIN 只能告诉你准备怎么跑,Query Profile 才能证明时间花在哪里。

四种慢查询看起来一样,处理完全不同

Profile 证据真正根因有效动作无效动作
ScanRows 远高于预期分区裁剪或谓词下推失败修正数据类型、分区条件、索引盲目加并行度
同算子 Max 远高于 AvgTablet 或 Key 倾斜改分桶、拆热点、改 Join 分布只看总耗时
ExchangeBytes 异常大Shuffle 或中间结果放大调整 Join 顺序、预过滤、Colocate增加 Scan 线程
WaitForDependency 高Build、Sort、Agg 或资源排队找上游阻塞和内存瓶颈重写 SELECT 列表

Query Profile 官方文档 建议在 MergedProfile 比较同一算子的 Min、Avg、Max。Max 显著大于 Avg,或 Min 为 0 而 Max 很大,是倾斜的直接信号。

诊断顺序只有四步

确认是不是同一条件

保存 SQL、Session 变量、数据时间范围、并发、缓存冷热和集群负载。只说昨天快今天慢,没有可比性。

用 EXPLAIN 查计划错误

EXPLAINVERBOSESELECTchannel,SUM(amount)FROMfact_orderWHEREpay_date='2026-08-27'GROUPBYchannel;

检查分区数量、Scan 谓词、估算行数、Join 顺序和 Exchange。统计信息过期会让 CBO 用错误基数做出合理但错误的选择。

用 Profile 查运行事实

SETenable_profile=true;-- 执行目标 SQLSHOWQUERY PROFILE;

沿最慢 Fragment 向下追,先找耗时最大的 Operator,再比较各 PipelineTask。不要从几百个 Counter 中随机挑一个最大值。

用单变量实验验证

强制分区条件、更新统计信息、隔离并发或对比 Shuffle Hint,每次只改一个变量。耗时下降但关键 Counter 没变化,不能证明动作命中根因。

一个可复现的倾斜实验

向测试表写入 1000 万行,其中channel = app占 80%,其他渠道均分。按channel分桶后执行聚合,再改用高基数user_id分桶进行同量对比。

应记录:

  • 每个 Scan 实例的 InputRows;
  • 聚合实例 RowsProduced;
  • Max/Avg 执行时间;
  • ExchangeBytes;
  • 峰值内存与 Spill。

如果热点分桶让单实例承担大部分数据,增加 BE 只能增加空闲节点。数据没有被重新切开,并行度不会凭空出现。

EXPLAIN 与 Profile 的关系像地图和行车记录仪

工具最适合证明不能证明
EXPLAIN优化器选择、Fragment、分区、Join 分布实际行数、资源竞争、长尾实例
Query Profile实际耗时、行数、内存、等待和网络为什么优化器当初做出该估算
系统监控BE CPU、磁盘、内存、队列哪个算子制造了压力

三者必须按 Query ID 和时间窗口关联。只看系统 CPU 高,无法知道是目标 SQL 还是 Compaction;只看 Profile,也无法判断同一时间其他工作负载抢走了多少资源。

源码阅读只追 Counter 的产生位置

Doris4.0.8中,源码最有价值的用法是从异常 Profile Counter 反查对应 Operator:Scan 的读取与过滤、Exchange 的发送接收、Hash Join 的 Build/Probe、Dependency 的等待。这样能确认 Counter 包含什么、不包含什么。

不要从 Coordinator 开始通读整个执行引擎。没有现场 Counter 作为入口,源码只会变成另一篇概念综述。

调优完成的标准不是更快一次

在相同数据和并发下连续采样 P50、P95、P99;同时确认 ScanRows、ExchangeBytes、Max/Avg 差距和峰值内存均按预期变化。还要在导入与 Compaction 同时运行时复测。

一条 SQL 的文字从未改变,不代表它执行的是同一份数据、同一种分布和同一组资源。

官方资料

  • Query Profile
  • Product Concepts
  • MPP Architecture
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 6:32:09

分布式光伏配电网集群划分与电压协调控制MATLAB实现

简介:本资源面向电力系统自动化、智能配电网方向的研究生与工程师,聚焦高渗透率分布式光伏接入下配电网电压越限与调控成本高的实际问题,提供一套完整的集群划分与分布式电压协调控制MATLAB实现方案。资源共23个文件,含17个核心m脚…

作者头像 李华
网站建设 2026/9/2 6:28:18

Django全栈实战:企业级新闻网站与后台管理系统开发详解

简介:这是一套基于Django框架开发的完整新闻网站及后台管理系统源码,面向Python Web初学者与Django进阶学习者,解决从零搭建内容型网站、理解MVT架构、掌握后台管理集成等核心实践问题。资源包共2000个文件,涵盖85个Python后端逻辑…

作者头像 李华
网站建设 2026/9/2 6:28:08

台积电收购面板厂扩产CoWoS封装:先进封装技术解析与行业影响

在半导体制造领域,先进封装技术正成为延续摩尔定律、提升芯片性能与集成度的关键路径。对于台积电这样的全球晶圆代工龙头而言,其CoWoS(Chip on Wafer on Substrate)等先进封装产能的紧缺,已成为制约其服务高端AI、HPC…

作者头像 李华
网站建设 2026/9/2 6:27:15

KingbaseES V8企业级部署实战:从环境规划到生产运维全解析

简介:本资源是人大金仓KingbaseES国产关系型数据库的正式部署安装包,面向Linux 64位平台的数据库管理员、信创项目实施工程师及国产化替代技术学习者,解决国产数据库在政企关键系统中快速落地部署的核心需求。压缩包共3个文件(475…

作者头像 李华
网站建设 2026/9/2 6:27:11

大模型+RAG+Agent:AI如何重构新闻编辑部工作流

“Mythos 2 已接管各大新闻编辑部”这个说法,最近在技术社区和媒体圈被频繁转发。如果只看字面意思,很容易产生一种错觉:这是一套能独立写稿、让记者批量失业的AI系统。但如果我们把“Mythos 2”看作一类AI新闻生产系统的代称,而不…

作者头像 李华
网站建设 2026/9/2 6:27:08

MATLAB仿真对比LEACH、LEACH-C与TS-I-LEACH协议性能与实现

简介:本资源是一套面向本科及硕士阶段无线传感器网络(WSN)教学与科研的MATLAB仿真代码包,聚焦LEACH协议及其改进型——LEACH-C(集中式)与TS-I-LEACH(基于时间槽与改进簇首选举)&…

作者头像 李华