OceanBase V4 中 SPM 如何防止执行计划退化?
SPM 通过 SQL Plan Baseline 管理执行计划,确保新计划只有经过验证优于旧计划才会被采用。
三个核心过程:
- 计划捕获 :新 SQL 首次执行时,若 Baseline 为空则直接加入;若已有 Baseline 且新计划不同,则触发演进验证。
- 计划演进 :通过流量灰度验证新计划是否比 Baseline 中已验证的计划性能更优,更优则替换,否则继续使用旧计划。
- 计划选择 :优化器生成新计划时,优先使用 Baseline 中已验证的计划,新计划需通过演进验证后才能使用。
关键系统变量:
-
optimizer_capture_sql_plan_baselines:控制是否自动捕获新计划到 Baseline。 -
optimizer_use_sql_plan_baselines:控制是否优先使用 Baseline 中的计划。