为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
- 【TiDB 版本】:V3.0.3
- 【问题描述】:绑定执行计划后,执行计划未生效,见图,帮确认下是什么原因,谢谢
看过官网的执行计划绑定相关的文档,但没找到什么有效思路 。通过看force index语法后的sql执行计划,与原sql执行计划,看不出差异,看上去执行计划是一摸一样的
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
看过官网的执行计划绑定相关的文档,但没找到什么有效思路 。通过看force index语法后的sql执行计划,与原sql执行计划,看不出差异,看上去执行计划是一摸一样的
第二个图里看执行计划,binding前后是一摸一样的,但看第一个图里的执行时间差很多。
如果生效了,第一个图里的2个sql的执行时间应该是一样的。
请问该怎么排查:是真的生效了呢,或者真的未生效? 这里语法上没出什么错吧
可以用 select connection_id()
获取当前连接的 connection id,然后用 explain for connection xx
来看当前连接中上次执行的 SQL 的执行计划。可以通过这个方式看看那条 SQL 是否用到了 binding 中指定的索引。
另外目前查看一条 SQL 是否使用到了 binding 的确不是很直观,有一个 github issue 在讨论这件事情,可以关注一下提些建议:https://github.com/pingcap/tidb/issues/16425
果然大佬 ,使用 explain for connection xx
方式可以确认bin’dings未生效,如图
我这个binding创建的是global级别的, show global bindings可以看到当前bingding结果, show bindings看不到任何结果。
针对这个问题,目前有解决办法吗 ? 这应该不是global与session级别之前的差异导致的吧
谢谢
有点奇怪,我这里本地用同样的版本构造了一个场景没能复现你的问题,你可以贴一个文字版的完整复现步骤吗?
好的 附件
show session bindings 看不到任何结果
这里指的是结果为空吗?
另外能否再提供一下 mt_order
的表结构,可以通过 show create table mt_order
查看表结构。
show session bindings 看不到任何结果 指的是没有返回结果
表结构如下:
。。。。。
复现了,是一个已经修复了的问题,最新的 3.0.12 已经修复了。
好的,多谢大佬。看了下3.0.12版本是3月16日发布的,最近会发3.0.13版本吗? 有个tidb集群是3.0.12版本,该版本tidb有出现个日志方面的小问题。期待3.0.13版本
请登陆官网,关注最新动态,敬请期待。
另外,4.0 RC 已发布,欢迎测试~
好的 多谢
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。