目前tiflash 版本中,如果语句使用了tiflash,执行计划展现不了在tiflash 那一层用了多少内存,这个可以改进一下,哪怕没那么精准,也可以加上这个功能
确实无法直接显示 TiFlash 算子层的内存使用量,很不方便,很好的提议
可以给表妹提点建议
trace应该可以看到这方面信息吧
TiDB 侧执行计划不采集 TiFlash 内存
EXPLAIN ANALYZE 只从 TiFlash 拉取执行时间、行数、线程 / 任务数,不采集内存指标。
TiFlash 内部有 MemoryTracker 统计单算子 / 单查询内存峰值(日志里能看到),但不上报给 TiDB 执行计划。
日志里面的可以量化吗,不太好获取吧
目前版本无法显示
为了防止 OOM,TiFlash 已经支持将内存中的数据“落盘”。
这样子。
若要显示 TiFlash 用多少内存,需依赖外部监控或日志分析 ,而非执行计划本身
Grafana 查看 TiFlash 内存曲线,结合 SQL 执行时间匹配峰值,判断查询是否吃满内存。
若 distinct 基数极大,内存超限 → 开启 group by 外部落盘;
若只是扫描行数多 → 开启列存压缩 + compact 整理 DMFile 减少读取开销。
这是个合理的产品改进建议。目前 EXPLAIN ANALYZE 里 TiFlash 算子确实主要展示行数、耗时和并发,内存维度的展示不如 TiKV/TiDB 侧细。可以到 TiDB 官方 GitHub 提一个 feature request(平凯星辰/tidb 仓库的 issue),描述清楚场景:希望执行计划里 TiFlash 算子能展示内存使用估算,用于排查 TiFlash 侧的内存压力。作为临时手段,现在可以从 TiFlash 的监控入手:Grafana 的 TiFlash-Summary / TiFlash-Proxy 面板里有内存相关指标,配合日志能大致看出某类 MPP 查询在 TiFlash 侧的内存占用;也可以用 tiflash 的 system 表查询运行时信息。虽然不如直接在执行计划里显示直观,但能先满足排查需求。建议把这个诉求正式提到社区/官方,产品同学看到实际场景更容易排期。