TiDB集群迁移后两个相同的表执行计划不一致

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.5
【复现路径】TiDB集群迁移 使用br进行数据迁移
【遇到的问题:问题现象及影响】迁移后旧集群和新集群两张相同的表的执行计划不一致
表字段 索引 都是一样的
旧集群的执行计划


新集群的执行计划

看起来新版 offset 搞得时候,会将排序去掉前面数据放在 tikv 做了。

很难说这个哪个更好。

1 个赞

现在新旧集群版本是一样的 旧集群是从低版本升级到6.5.5 新集群是直接安装的6.5.5 主要是比较疑惑为什么相同的SQL查询 一个是IndexFullScan 一个是IndexRangeScan

看下两个集群的 tidb_cost_model_version 系统变量值

1 个赞

对啊 我理解是因为排序不在 tidb 做,要下推到 tikv 做导致的。
需要扫整个 index

1 个赞

旧集群变量值是1 新集群变量值是2

麻烦问下这个可以调整吗?

技术可以调整,但建议从应用角度评估下,设置为哪个值对实际性能更友好

1 个赞

没啥大影响你就先别动了,另外 6.5.11 马上快发布了,修复了很多 bug ,看看是不是考虑升级下

1 个赞
  • 1:使用 Cost Model Version 1 代价模型。TiDB v6.4.0 及之前的版本默认使用 Cost Model Version 1。
  • 2:使用 Cost Model Version 2 代价模型。TiDB v6.5.0 正式发布了代价模型 Cost Model Version 2,在内部测试中比 Version 1 版本的代价模型更加准确。
    建议看看多找几个有没有类似的 不同的执行计划,看看消耗时间,哪个更好点。根据说明2是比较好一点的。具体还是需要看你自己的业务SQL,如果大部分都是第二个执行计划好。那就不需要做任何变动
1 个赞

好的 谢谢

要不加个 hint 改下 index 使用🤔。
我估计 你 use_index(ACT_IDX_HI_ACT_INST_PROCINST) 就好了。

好的 谢谢 :smiley:

好的 谢谢您的建议

好的 谢谢 刚才参考楼上调整了下 tidb_cost_model_version 执行计划已经一致了

感谢! 刚才调整了一下 tidb_cost_model_version 系统变量值 执行计划已经与旧集群一致 业务接口速度也有明显提升。

感谢各位 问题已解决

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