同样的sql在DBeaver里执行的sql计划和java生成的执行计划不一致

mpp mode may be clocked because 这一行后面显示的是什么

1 个赞

可以用添加备注信息的方式区别SQL,在Dashboard中查看这信息;
怀疑受bind信息或者统计信息影响了

后面一行主要就说tidb_partition_prune_mode=static,但实际是dynamic

不走mpp,提示信息是说分区表没有全局统计信息,实际上是有的,不知道啥原因导致优化器没发现全局统计信息

又出现了另外的sql
tidb慢sql里执行计划是:


dbeaver里执行计划是:

帮忙顶上,跟着解惑

原厂的同学们有碰到过这个问题没?

在dashboard找到这条sql,看执行计划数是多少

通常是两种可能性:session 级别的选项设置不一样、时间差导致数据量(主要是analyze结果)差异大

这种问题,你自己问题都是答案了,客户端差异导致的,建议先看下:
1、两个客户端携带的链接参数的对比
2、在dashboard 里面看下这两个SQL 进入数据库,是不是形式上完全一样

没有遇到过。咨询一下官方

参数一样,统计信息没有变更的情况下,也会出现。tidb dashboard会有这种告警:disable dynamic pruning due to ads_iot_current_value_minute has no global stats。但是实际上的全局统计信息是在的

上面楼层里有两个对比的执行计划图片

我的意思是在dashboard里能看到一个sql有两个执行计划不,如果能看到,可以试试用create global binding绑定一个耗时较少的

另外也可以直接在dashboard上绑定

dashboard里都是走cop[tiflash]的,官网里说走tiflash的绑定不了执行计划。

dashboard不行的话,可以用命令行试试,我在7.5.6上是可以绑定的,不知道7.1上可行不

好的~

试了下,绑定没效果