OceanBase V4 中 SPM 如何防止执行计划退化?

OceanBase V4 中 SPM 如何防止执行计划退化?

SPM 通过 SQL Plan Baseline 管理执行计划,确保新计划只有经过验证优于旧计划才会被采用。

三个核心过程:

  • 计划捕获 :新 SQL 首次执行时,若 Baseline 为空则直接加入;若已有 Baseline 且新计划不同,则触发演进验证。
  • 计划演进 :通过流量灰度验证新计划是否比 Baseline 中已验证的计划性能更优,更优则替换,否则继续使用旧计划。
  • 计划选择 :优化器生成新计划时,优先使用 Baseline 中已验证的计划,新计划需通过演进验证后才能使用。

关键系统变量:

  • optimizer_capture_sql_plan_baselines :控制是否自动捕获新计划到 Baseline。
  • optimizer_use_sql_plan_baselines :控制是否优先使用 Baseline 中的计划。