scan性能问题

主键也是得扫啊,limit是扫描后再limit。并不是随随便便扫出来几条就返回的。优化的话尽量别那么大范围呗。

从trace上看,应该只扫描了两个region, 也只需要扫描两个region。


我倒是怀疑是上面这一步耗时太多。
从执行计划上面看,两种查询在TiKV上的耗时和scan的数据量基本一样,时延差异应该在TiDB上。
我的环境中有18万+个region。
sql查询中指定的key range太大,导致key Range跟所有的region,做范围比较,以确定该region是否是目标 region。
sql查询中指定的key range小,只需要key Range跟少数几个region,做范围比较,以确定该region是否是目标 region。

没有原厂专家分析下吗, 感觉是tidb的bug啊!

Decrease loading Region info in RegionCache when using select * from table limit 1 · Issue #39733 · pingcap/tidb · GitHub

类似的问题

1 个赞

确认是一个产品缺陷,修改一下帖子分类。

后面有修复版本计划,烦请告知一下!

现在的问题是这样的,原始14320上有一个可能的修复。

但这个pr可能有冲突,没有合并。

等这个pr close后,看看对应的日期和版本就明确是在那个版本了。

1 个赞

目前7.5.1版本有办法规避吗(where 条件范围很大)?

和相关的老师沟通了之后大概的结果如下:
8.2及以后的版本 里面有相关性能提升的规划,不光这个问题,几个相近的问题会集中解决一下。有以下几个相关的 issue:

https://github.com/pingcap/tidb/issues/39733 https://github.com/pingcap/tidb/issues/40441

不过修改会比较多,目前的时间还没有定,计划也可能会有变化。已经有 github issue 建议关注

进展就好哈

2 个赞