无法删除绑定的执行计划(binding)

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:
    Release Version: v4.0.2
    Edition: Community
    Git Commit Hash: 328b6d0a955c4668cf3188d02a6df42e16eaab4e
    Git Branch: heads/refs/tags/v4.0.2
    UTC Build Time: 2020-07-01 08:19:48
    GoVersion: go1.13
    Race Enabled: false
    TiKV Min Version: v3.0.0-60965b006877ca7234adaced7890d7b029ed1306
    Check Table Before Drop: false

  • 【问题描述】:人工绑定的执行计划无法删除掉
    执行计划是升级v4.0之前创建的,使用DROP GLOBAL binding FOR sql…删除执行计划,SQL执行成功,但是SHOW GLOBAL bindings时,该执行计划还存在。source栏的值为:unknown

除了此条执行计划source栏的值为:unknown外,还有两条source栏的值为:unknown的执行计划。这三条都是升级v4.0之前创建的,但是后两条可以删除。

无法删除的原始SQL:
SELECT * FROM act_balance
WHERE act_balance.deleted_at IS NULL AND ((acct_no = ‘373899202101018’ AND ccy = ‘CNY’))
ORDER BY act_balance.id ASC
LIMIT 1 FOR UPDATE

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

1 个赞

现在执行 SQL 以后,SQL binding 还生效吗?

EXPLAIN
SELECT * FROM act_balance
WHERE act_balance . deleted_at IS NULL AND ((acct_no = ‘373899202101018’ AND ccy = ‘CNY’))
ORDER BY act_balance . id ASC
LIMIT 1 FOR UPDATE

EXPLAIN查看执行计划,SQL binding 依然生效。

1 个赞

tidb 日志中有信息吗?