基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
循环 INSERT 执行时间越来越慢
更新时间:2024-01-22 01:56
问题描述
在 OceanBase 数据库的存储过程中存在循环插入一条数据的 INSERT 语句,开始前面 INSERT IS_HIT_PLAN: 1 耗时 20ms 左右,到后面IS_HIT_PLAN: 0,耗时从 40ms 逐渐到了 200 多 ms。
日志中有报错信息 get cache obj by sql failed。

日志中有报错信息 Cache Object Memory Leaked Much。

适用版本
OceanBase 数据库 V3.2.3(oceanbase-3.2.3.0-20220418212020)以下版本。
问题原因
plan cache 未命中的原因是参数化的时候递归到like表达式的时候打上了 is_child_not_param_ 的标记,出这层递归的时候 is_child_not_param_ 的标记没有被清掉,所以后面所有的 question mark 表达式都被识别成了不能参数化的常量。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V3.2.3 BP8(oceanbase-3.2.3.3-108000062023041511)及之后版本。