一句话理解
就像给 OushuDB 的查询计划拍了一张 X 光片——把密密麻麻的 EXPLAIN 文本变成一棵可点击、可展开、可对比的交互式树,一眼就能看出哪个节点在拖后腿。
概述
oushudb_explain 是一个 OushuDB(原 Apache HAWQ)EXPLAIN 执行计划专业查看工具 / WorkBuddy Skill。核心能力:解析 OushuDB EXPLAIN 文本输出,生成自包含的交互式 HTML 可视化页面,无需任何后端服务,浏览器直接打开即可使用。
核心功能
五标签页视图
视图 | 说明 |
Plan | 树形流程图,显示 cost / time / rows,点击节点展开完整属性、段统计、ORC 扫描面板 |
Grid | 表格铺开所有节点,含 MaxSegTime / LastSegTime / MaxSegRows / LastSegRows 段级指标 |
Stats | 按节点类型和表名聚合统计,带可视化进度条,快速定位瓶颈类型 |
Query | 查询基本信息展示 |
Raw | 原始 EXPLAIN 文本对照查看 |
OushuDB 特有解析
Rows out/in分布式段统计 —Avg N rows x M workers. Max/Last(segX:host...)完整解析,含to first row/to end/start offset时间线
- ORC 扫描面板 —
LM info(懒加载合并)、Predicate Info(谓词下推 / 条纹裁剪)、MergeRead Info、Decompress Info、Cache Read(缓存命中率)、InputStream Info(带宽吞吐)
- 分布式统计 —
Data locality statistics(本地性比率)、Dispatcher statistics(代理连接时延)、Slice statistics(各切片内存 / Work Mem)
- 40+ 节点类型 — 按类型着色,含
Gather Motion、Broadcast Motion、Redistribute Motion、Orc Table Scan、Hash Join、GroupAggregate等
架构设计

解析器亮点
- 两遍扫描 — 第一遍识别节点行(
>开头 + 含cost=)与属性行;第二遍递归解析并构建树
- 缩进推断 — 不依赖固定缩进宽度,通过比较行首空白长度自动推算父子层级
- OushuDB 专用正则 — 专有正则提取
Rows out: Avg N rows x M workers. Max/Last(segX:host...)段级指标
使用方式
一键调用(推荐)
在 WorkBuddy 对话中贴入 EXPLAIN 文本直接调用:
WorkBuddy 自动完成:保存
.explain 文件 → 调 app.py 生成 HTML → present_files 预览面板打开。全程一键。命令行
内置示例快速体验
完整工作流
- 在 OushuDB 中执行
EXPLAIN <your_query>获取执行计划文本
- 将文本保存为
.explain文件(或直接贴入 WorkBuddy 对话)
- 运行
app.py生成 HTML 可视化
- 浏览器打开 HTML,在 Plan / Grid / Stats / Query / Raw 五个标签页间切换分析
- 点击 Plan 视图任意节点展开详情面板
内置示例数据
文件 | 说明 |
example.explain | OushuDB 通用示例 |
视图交互说明
在 Plan 视图中点击任意节点,展开的详情面板包含:
- 基本属性 — Startup Cost / Total Cost / Plan Rows / Plan Width
- 实际执行 — Actual Time (first/last) / Actual Rows / Loops
- OushuDB 段统计 — Rows out(Avg / Max / Last / Workers)、MaxSegTime、LastSegTime
- ORC 扫描信息 — LM info、Predicate Info、Cache Read、Decompress Info
- Hash Join 明细 — Hash chain length、Buckets、内存使用
依赖与环境
- Python 3.9+(标准库,零额外 pip 包)
- 输出为自包含 HTML,无服务端依赖,浏览器直接打开
- 源码托管于
~/.workbuddy/skills/oushudb_explain/(WorkBuddy 用户级 Skill)
效果展示:视图解读




- Author:ayee
- URL:http://preview.tangly1024.com/article/3998d88b-b050-8058-8b13-f4fd6f12b1ed
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts
