多表关联 并有多表并行查询 union / distinct 查询不能下推到存储节点执行,db压力过大 查询失败数据量亿别

看上去是没有mpp。

set tidb_allow_mpp=ON;
set tidb_enforce_mpp=ON;

在session级别开这两个变量,再看看结果。

已经set了强制mpp, 就是这个执行计划。

我这次找了个分区表,写了个和你差不多的。但是结果是这样的。 :sweat_smile:

建议查查算子下推的黑名单设置。看看这个表里是否有结果,mysql.expr_pushdown_blacklist

还有就是我的tiflash是2副本2实例。

当我设置静态分区裁剪的时候,出现了和你一样的问题。
可以session级别调整这个参数

set tidb_partition_prune_mode=‘dynamic’

再试试看。



都设置了,warn MPP mode may be blocked because table tag_total_mid_frequent_interval_detailis a partition table which is not supported when @@tidb_partition_prune_mode=static.
这个日志。

1 个赞

靠谱,我也发现了是这个参数的问题。 :+1:

session级别小调一下看看。

union 应该下推吗?它不是应该在tidb层面去重吗?下推到tikv去重之后到tidb还是得去重啊

感觉这就和取最大值一样,每个tikv节点取最大值,然后tidb节点再取最大值。层层筛选,节节提速。

1 个赞

直接推给tiflash去重是最好的。mpp会在tiflash节点之间交换数据,所以可以直接去重,把算好的结果给tidb。