关于 OceanBase 中 SQL 执行计划的绑定(Outline/Baseline)与演化(Evolution)机制,以下说法正确的是?
A. 使用 CREATE OUTLINE 绑定的执行计划会被锁定为固定计划,优化器将不再根据统计信息变化选择其他计划,且该计划无法被删除或修改,只能重建 Outline。
B. SPM(SQL Plan Management)的计划演化功能默认是自动开启的,系统会定期将性能更好的未接受计划自动切换为接受状态,无需用户干预。
C. 当一个 SQL 同时存在 Outline 绑定的计划和 SPM 基线中的计划时,Outline 优先级高于 SPM,系统优先使用 Outline 指定的计划。
D. 计划演化过程中,如果新计划的执行时间超过基线计划的 plan_retry_control 参数设置的倍数(默认 3 倍),该计划会被标记为拒绝并永久不再考虑。
解析 :
OceanBase 中执行计划的固定有多种方式:Outline(通过 CREATE OUTLINE 显式绑定)优先级最高,其次是 SPM 基线中的已接受计划,最后才是优化器自动生成的非基线计划。Outline 主要用于关键业务的计划锁定,SPM 则用于自动管理计划基线。当两者同时存在时,Outline 明确指定的计划具有最高优先级,系统不会考虑 SPM 中的其他计划。
-
A 错误 :Outline 绑定的计划可以被删除 (
DROP OUTLINE ),也可以被修改(先删除再重建,或使用 CREATE OR REPLACE )。不是“永久锁定无法修改”。
-
B 错误 :计划演化的自动切换默认未开启 ,需要设置系统变量
plan_evolution 和相关参数(如 evolution_retry_times 、evolution_retry_interval )才能启用自动演化。默认情况下需手动接受计划。
-
C 正确 :优先级顺序:Outline > SPM 基线已接受计划 > 优化器自动计划 。
-
D 错误 :计划被拒绝后并非“永久不再考虑”,系统会在后续的演化窗口中(根据
evolution_retry_times 和 evolution_retry_interval )重新评估该计划,如果统计信息变化或环境改变,计划可能在未来被接受。不是一次性永久拒绝。
3 个赞