今天又遇到一个奇怪的问题:对大表进行analyze收集后,运行了几天,发现在dashboard统计到的同样的SQL的执行计划和命令行的执行计划不一样

【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.0
【复现路径】今天又遇到一个奇怪的问题:对大表进行analyze收集后,运行了几天,发现在dashboard统计到的同样的SQL的执行计划和命令行的执行计划不一样
【遇到的问题:问题现象及影响】今天又遇到一个奇怪的问题:对大表进行analyze收集后,运行了几天,发现在dashboard统计到的同样的SQL的执行计划和命令行的执行计划不一样
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
1.这个是从tidb dashboard里截取的执行计划:

2.这个是命令行截取的执行计划:

是dashboard显示有问题。

我用7.1版本也发现过这个问题。感觉可以给dashboard提一个bug。

这两个执行计划其实是一样的。因为目前只有mpp会有ExchangeSender,需要从其他tiflash节点发送/接受数据。所以有这个算子,基本可以确定是mpp。也就是说。dashboard里面task这一栏的cop[tiflash]的显示是不正常的。

1 个赞

感觉楼上说的对

确实,出现这个已经肯定是mpp了

好的,我去提一下,在哪儿提呢,github的issus还是?

确实是mmp,有点奇怪了

参考1楼

应该就是1楼说的问题,explain和dashboard的展现逻辑和来源不同,dahsboard的都是根据tidb_decode_plan解析来的,再存储plan时会只保留有用的信息,尽量减小大小,最后解析时再拼一些字符串。之前碰到过一个类似的再解析执行计划是那个拼其他字符串的逻辑没更新导致看到的执行计划内容不一致,一时半会找不到那个帖子。
参考:
https://github.com/pingcap/tidb/issues/28731

2 个赞

那这个问题,能不能算个bug呢,哈哈

应该bug

1 个赞

https://github.com/pingcap/tidb/pull/37422
可以参考这个 真正走的cop请求方式的执行计划是没有ExchangeSender 类似算子的

遇到过类似的情况。

论坛提也行,还有积分可以拿。

【建议&反馈·产品缺陷】

回去测试下这个Bug看看

论坛提就行

以真实analyze执行的为准,解析执行计划版本的问题。升到6.5.6以后貌似好了

我在 GitHub issue 里面也回复了。
如楼上所说,cop 这里是显示问题,实际上有 ExchangeSender 算子的肯定是 mpp 而不是 cop。
tidb 在之前版本开始支持输出另一种格式的执行计划。从 v7.4 开始,dashboard 开始使用这种新的格式的执行计划来做展示,这个执行计划是没有这个显示问题的,并且和 EXPLAIN ANALYZE 的格式基本完全一样,只是多了一列 estimated cost。
在 v7.4 之前,也可以看“图形”面板的计划,这个也是没有这个显示问题的。或者也可以从对应的系统表里面查 BINARY_PLAN 列用 tidb_decode_binary_plan() 来解析,这个也是和 EXPLAIN ANALYZE 格式一致的。