OceanBase V4 中 SPM(SQL Plan Management)的作用是什么?如何使用 SPM 固定执行计划?
SPM 用于管理、固定和演进 SQL 执行计划 ,防止因统计信息变化、参数调整等导致执行计划劣化(Plan Regression)。
使用流程:
-
捕获计划 :将 SQL 的历史执行计划加入 Baseline,可通过
DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE从计划缓存加载,或从 AWR/STS 加载。 -
固定计划 :将 Baseline 中的计划设为
ENABLED和FIXED,优化器会优先使用该计划。 -
演进计划 :通过
DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE验证新计划是否更优,优则接受,否则保留原计划。 -
管理操作 :可通过
DROP_SQL_PLAN_BASELINE、ALTER_SQL_PLAN_BASELINE删除或修改 Baseline。
与 Outline / Hint 的区别: Outline 通过 Hint 强制改写 SQL 文本,SPM 在优化器层面管理计划集合,更灵活且支持自动演进。