top-n下推不稳定

update SQL,出现2个执行计划,差异分别是top-ne没下推到tikv。

执行计划1:
top n正常下推,actrows 3

执行计划2:
topn未下推,actrows 10

加了hint可以吗? /*+ LIMIT_TO_COP() */

不加hint也能下推 比如前面贴的687次没下推 42次下推了

统计信息是否是准确呢

这个似乎也没起作用

image

做了binding也不好使

hello, 这个 mysql client 里能手动复现出来吗?
如果能的话可以搞一份 replayer 出来, 看看能否有新的发现
如果不能估计就比较玄学了 :joy:

explain看都是下推了的

交流会上问问大佬吧, 目前暂时没思路 :joy:

注意观察 topn 没有下推的 plan 里面,除了 topn 没下推之外,还有一个 UnionScan 算子
这个算子一般是在事务里面做读/写的时候,才会使用到的算子。

所以你可以这样验证一下,是不是这样的场景就没有用到 topn 下推

begin 
insert some data
update xxx where xxx order by limit 1
rollback

而不在 begin 里面,直接执行

update xxx where xxx order by limit 1

就下推了…
如果是这个问题,可以给我们提一个 issue,应该是事务里面 union scan 对 topn 下推这块没处理好。

@h5n1

手动测了2次 看起来是这样

@tiancaiamao

Create a issue https://github.com/pingcap/tidb/issues/46755
And we’ll handle it later.

我是来学习的

坐等最佳答案,然后学习一下

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。