首批通过分布式安全可靠测评,为关键业务系统打造
in expr 中参数较多时生成计划慢
更新时间:2026-05-14 09:21
问题现象
业务反馈在 in expr 中的参数较多(>3000)时,第一次执行生成计划时很慢(7s+)。

第二次执行走 plan cache 时,时间降到 1s 内(0.23s)。

第一次执行时生成计划太慢,性能较差,需要修复
关键诊断信息
触发条件
in 参数多。
问题原因
对 in expr 抽取 query range 时,会将 in 中的每个参数都会生成一个用于描述 range 的结构(ObKeyPart),key part 之间以 or 的形式连接成一个 range graph,当 in expr 的参数很多时,生成的 range graph 会非常庞大,在抽 range 的阶段,会对这个 range 中的 key part 进行大量内存分配、深拷、递归遍历等耗时操作,成为了性能瓶颈。
问题的风险及影响
生成计划时间长,可能会影响线上业务。
影响租户
影响 OceanBase 数据库中的 Oracle 租户和 MySQL 租户,对于 SYS 租户无影响。
影响版本
OceanBase 数据库企业版本 V3.2.3 GA(oceanbase-3.2.3.0-20220418212020)及之后版本、V3.2.4 GA(oceanbase-3.2.4.0-100000072022102819)及之后版本。
解决方法及规避方式
解决方法:
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库企业版 V3.2.3 BP6(oceanbase-3.2.3.3-106000102022111521)及之后版本。
规避方式:
减少 in 参数。