基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
低版本禁用 SPM
更新时间:2026-05-14 07:41
问题现象
租户系统变量 optimizer_use_sql_plan_baselines 为 true 的场合会开启 SPM 功能,会通过内部表持久化 plan。在 OceanBase 数据库 V4.0 之前版本,SPM 会由 SQL 自动生成 plan_baseline schema 对象并通过 schema 的机制同步给整个集群。该方式有以下几个问题。
持久化 ·plan_baseline schema· 对象需要走 DDL,由于 DDL 是集群内串行执行,由 SQL 自动触发的大量 DDL 可能会影响到业务正常的 DDL。
plan_baseline schema对象缺乏自动清理的机制,随着 SQL 的执行,plan_baseline schema对象会越来越多,只增不减。这伴随两个问题。plan_baseline schema对象过多导致 schema 内存占用大。plan_baseline schema对象过多导致 OBServer 重启全量刷新 schema 耗时长,或者超时。
OceanBase 数据库 V4.0 之后 SPM 的功能经过重构,不再走 DDL 及依赖 schema。OceanBase 数据库 V4.0 之前的版本需要禁用 SPM 功能。
关键诊断信息
触发条件
低版本中租户系统变量 optimizer_use_sql_plan_baselines 为 true。
问题的风险及影响
影响业务 DDL 执行。
schema 内存占用大,且重启也无法有效释放。
影响 OBServer 重启。
影响租户
OceanBase 数据库企业版 V2.2.77 GA(oceanbase-2.2.77-20210508211731)及之后版本、V3.1.2 GA(oceanbase-3.1.2-20210618150922)及之后版本、V3.2.3 GA(oceanbase-3.2.3.0-20220418212020)及之后版本。
解决方法
租户关闭 SPM 功能。
set @@global.optimizer_use_sql_plan_baselines = '0';遇到 OBServer 重启 schema 刷新持续报 -4012 时,可以尝试调大集群级配置项,恢复后需要还原为缺省值 30s。
ALTER SYSTEM SET internal_sql_execute_timeout = '10M';