主键也是得扫啊,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啊!
有猫万事足
29
现在的问题是这样的,原始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 个赞
system
(system)
关闭
32
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。