last_plan_from_binding和last_plan_from_cache参数

【 TiDB 使用环境】测试
【 TiDB 版本】v8.1.0
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
看官方文档,如下所示:

last_plan_from_binding 从 v4.0 版本开始引入

  • 作用域:SESSION
  • 是否受 Hint SET_VAR 控制:否
  • 类型:布尔型
  • 默认值:OFF
  • 该变量用来显示上一条执行的语句所使用的执行计划是否来自 binding 的执行计划

last_plan_from_cache 从 v4.0 版本开始引入

  • 作用域:SESSION
  • 是否受 Hint SET_VAR 控制:否
  • 类型:布尔型
  • 默认值:OFF
  • 这个变量用来显示上一个 execute 语句所使用的执行计划是不是直接从 plan cache 中取出来的。

上面说的是会话变量,不过我这没有办法去设置,如下所示:
mysql> set session last_plan_from_binding=on;
ERROR 1238 (HY000): Variable ‘last_plan_from_binding’ is a read only variable
mysql> set session last_plan_from_cache=on;
ERROR 1238 (HY000): Variable ‘last_plan_from_cache’ is a read only variable
mysql> SHOW VARIABLES LIKE ‘last_plan_from_binding’;
±-----------------------±------+
| Variable_name | Value |
±-----------------------±------+
| last_plan_from_binding | OFF |
±-----------------------±------+
1 row in set (0.00 sec)

另外,可以从哪里获取是不是直接从 plan cache 中取出来的,以及 是否来自 binding 的执行计划?

只读变量不允许设置值,要查看执行计划,可以使用 explain 语句

可以看下如下方式查看是否使用绑定的执行计划

https://docs.pingcap.com/zh/tidb/stable/sql-plan-management#排查绑定

1 个赞

谢谢~刚刚看了你发的链接:
– 使用 explain format = ‘verbose’ 语句查看 SQL 的执行计划

explain format = ‘verbose’ SELECT * FROM t;

– 通过执行 show warnings 了解该 SQL 语句使用了哪一条 binding

show warnings;
±------±-----±-------------------------------------------------------------------------+
| Level | Code | Message |
±------±-----±-------------------------------------------------------------------------+
| Note | 1105 | Using the bindSQL: SELECT /+ USE_INDEX(t idx_a)/ * FROM test.t |
±------±-----±-------------------------------------------------------------------------+
1 row in set (0.01 sec)

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