合并清空执行计划缓存,导致查询缓慢

【 使用环境 】生产环境
【 OB or 其他组件 】OB
【 使用版本 】社区版本3.1.4-BP3
【问题描述】生产上有一张业务表是二级分区表+全局索引的表结构,有一类查询是根据全局索引查找数据,我们发现如果没有命中计划缓存,重新生成一次计划的代价比较高,查询需要4秒左右,业务会超时报错。
问题在于,我们发现OceanBase在每日合并后会将执行计划缓存清空,导致每日合并之后的业务查询都会触发重新生成执行计划,导致这一时间的业务报错,请问每日合并清空计划缓存这个逻辑有没有参数控制关闭?如果没有,该如何解决这类问题
【复现路径】问题出现前后相关操作

在如下场景下执行计划会进行刷新:

  • SQL中涉及的表的SCHEMA进行变更时(比如添加索引,删除或增加列等),该SQL对应的在计划缓存中的执行计划将刷新;

  • SQL中涉及的表的统计信息重新收集时,该SQL对应的执行计划会刷新,由于OceanBase在合并时统一进行统计信息的收集,因此现在每次进行合并后,计划缓存中所有计划将刷新;

合并的时候刷新执行计划这个是没有开关控制的。一般情况下执行计划的生成都是ms级别,不会占用太长时间的。想问问你们业务的这条sql命中执行计划的时候查询需要多久?

能上SQL不?发出来看看

如果不命中执行计划,那么这条非常简单的SQL将会执行4秒左右,之后执行计划缓存稳定,其查询时间就都正常了。

我怀疑二级分区+全局索引的表生成的执行计划耗时非常夸张,根本不是所说的毫秒级别。

plan_cache_plan_stat.txt (5.9 KB)

如果需要表结构,请告诉我你的钉钉号,我私发给你。