四个交互演示:① EXPLAIN 三剑客对比 · ② 慢查询排查流程图 · ③ 反模式 vs 正确做法案例库 · ④ 火焰图样例
选左边的按钮切换 EXPLAIN 命令,右侧输出对应的真实结果(在 ClickHouse 24.x 上抓取)。
遇到慢查询不是上来就改 SQL,而是按这条 SOP 一步步收敛问题域。
flowchart TD A[业务反馈慢 / 监控告警] --> B[system.query_log
找出 query_id] B --> C{看 ProfileEvents
SelectedParts / SelectedMarks} C -->|大| D[索引/分区裁剪没生效] C -->|小| E[扫描已经很省
瓶颈在 CPU/内存] D --> D1[加分区键到 WHERE] D --> D2[调整 ORDER BY 主键序] D --> D3[加 Skip Index] E --> F{看 memory_usage} F -->|接近上限| G[GROUP BY/JOIN 内存爆] F -->|不大| H[CPU 热点] G --> G1[启用 external_group_by] G --> G2[字典化右表/Dictionary] G --> G3[改写聚合算法] H --> H1[trace_log + flamegraph] H1 --> H2{热点函数} H2 -->|Decompress| H3[换 LZ4 / 升级 SSD] H2 -->|Hash| H4[降基数 / 改 GROUP BY] H2 -->|Sort| H5[利用 ORDER BY 主键序]
点击下面的卡片,下方展示「反模式 / 正确做法」并排对比,包含真实 DDL/SQL 与原因解释。
横轴 = CPU 时间占比;纵轴 = 调用栈深度(栈底在下);颜色仅用于区分相邻函数,无大小含义。鼠标悬停看函数名 + 占比,单击查看调优建议。
SET query_profiler_cpu_time_period_ns=10000000;
3) 跑慢 SQL;4) clickhouse-flamegraph --query-id=<qid> --output-dir=./flame。