关于 OceanBase SQL Plan Baseline 的自动捕获(Auto Capture)机制,以下描述正确的是?


A. SQL Plan Baseline 的自动捕获功能默认关闭,需要用户手动开启,开启后系统会自动将优化器生成的执行计划加入到 Baseline 中。

B. 自动捕获仅针对第一次执行的 SQL,对于已存在于 Baseline 中的 SQL,即使生成更优的新计划也不会自动捕获。

C. 开启自动捕获后,系统会将所有执行过的 SQL 计划都标记为 ACCEPTED ,从而完全固定计划,防止计划变更。

D. 自动捕获的计划即使性能较差,也会被立即启用,可能导致 SQL 性能回退,因此该功能不建议在生产环境使用。

2 个赞

解析
OceanBase 的 SPM(SQL Plan Management)支持自动计划捕获功能,默认关闭。用户可以通过设置系统变量 plan_cache_plan_auto_capture (V4.x 中可能有其他参数如 spm_auto_capture_plan )为 TRUE 来开启。开启后,系统会自动将优化器生成的执行计划(对于尚未建立基线的 SQL)加入到 SQL Plan Baseline 中,初始状态为 ACCEPTED 。这样后续即使统计信息变化导致优化器生成不同计划,只要新计划未被验证和接受,系统仍会使用基线中的计划,从而保证计划稳定性。

  • A 正确 :自动捕获默认关闭,需手动开启,且只会捕获尚未在 Baseline 中的 SQL。
  • B 错误 :对于已存在 Baseline 的 SQL,如果优化器生成了新计划(且性能明显更优),在开启自动演进的情况下,系统可以捕获并验证该计划,验证通过后可标记为 ACCEPTED 并加入 Baseline。
  • C 错误 :自动捕获不会“将所有执行过的 SQL 计划”都标记为 ACCEPTED ,只会为首次执行且不在 Baseline 中的 SQL 捕获其当前计划。已存在 Baseine 的 SQL 不会自动覆盖。
  • D 错误 :自动捕获的计划在加入 Baseline 时即被 ACCEPTED ,因为这是 SQL 首次执行时的计划,没有性能更差的证据。但后续如果因统计信息变化产生更差计划,自动捕获不会替换已有基线;如果用户担心首次捕获的计划就有问题,可以在开启捕获前人工审核。该功能在生产环境可以安全使用,并非不建议使用。
2 个赞

正确答案:A

2 个赞

选A

1 个赞

A. SQL Plan Baseline 的自动捕获功能默认关闭,需要用户手动开启,开启后系统会自动将优化器生成的执行计划加入到 Baseline 中。

1 个赞