OceanBase V4 中 SPM(SQL Plan Management)的作用是什么?如何使用 SPM 固定执行计划?

OceanBase V4 中 SPM(SQL Plan Management)的作用是什么?如何使用 SPM 固定执行计划?

SPM 用于管理、固定和演进 SQL 执行计划 ,防止因统计信息变化、参数调整等导致执行计划劣化(Plan Regression)。

使用流程:

  1. 捕获计划 :将 SQL 的历史执行计划加入 Baseline,可通过 DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE 从计划缓存加载,或从 AWR/STS 加载。
  2. 固定计划 :将 Baseline 中的计划设为 ENABLED 和 FIXED ,优化器会优先使用该计划。
  3. 演进计划 :通过 DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE 验证新计划是否更优,优则接受,否则保留原计划。
  4. 管理操作 :可通过 DROP_SQL_PLAN_BASELINE 、ALTER_SQL_PLAN_BASELINE 删除或修改 Baseline。

与 Outline / Hint 的区别: Outline 通过 Hint 强制改写 SQL 文本,SPM 在优化器层面管理计划集合,更灵活且支持自动演进。