tidb版本升级,v5.3.1升级到v7.5.2,部分sql的执行计划走偏,请问大佬们tidb支持把sql在旧版本的执行计划固化到新集群么?
重新收集下表统计信息吧
ANALYZE TABLE
没有用,收集过了,新集群比旧集群跑的慢
可以关注下代价模型的变化,如果慢sql的数量可控,可以临时考虑在7.5的版本里改成低版本的代价模型,生成好的执行后直接绑定。
v6.5.0开始,新创建的 TiDB 集群默认使用、Cost Model Version 2。
- 作用域:SESSION | GLOBAL
- 默认值:
2
- 取值范围:
[1, 2]
好的,我拿测试环境试一下,感谢大佬
建议升级前,先保存下当前的执行计划绑定,升级后,如果执行计划绑定没有了,再手动执行下,对比下和升级前的执行计划是否一样,参考链接: 执行计划管理 (SPM) | TiDB 文档中心 (pingcap.com)
sql 多吗,不多加 hint 走过去就好了
因为uat测试下来没啥毛病,这个sql慢也就稍微一点儿点儿,就没管它,谁知道生产的话,慢很多,应该和数据量有关
就三几条,不过有一个调用很频繁
那就使用 binding 进行执行计划绑定就好了
嗯嗯嗯,我先测试一下,谢谢
不建议这么绑定吧,放在sql注释里做绑定不可以嘛
开发不太愿意改sql,不过问题搞定了,改了个参数
建议哪类sql有问题,那就给哪类添加hint吧【force index xx】,前提是确定数据分布没问题
嗯嗯,加hint是改动最小的了,但需要开发配合
这个参数,你的执行计划偏离的几个sql都是 join关联查询的?所以才影响的吗?
没试过