返回数说广场
1
查看以下PL/SQL语句:
DECLARE
my_plans pls_integer;
BEGIN
my_plans := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE (sql_id => '9twu5t2dn5xd';
END;
上面的命令将执行计划加载到SQL计划基线中,以下哪个是正确的?(B)
A、执行计划不会以ACCEPTED为yes状态写入基线
B、执行计划会以ACCEPTED为yes状态写入基线
C、执行计划会以FIXED为yes状态写入基线
D、执行计划不会以ENABLED为yes状态写入基线
解析:
在Oracle数据库中,使用`DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE`过程可以将来自SQL游标缓存的SQL执行计划加载到SQL计划基线(SQL Plan Baselines)中。这个过程的目的是帮助数据库优化器通过历史表现良好的执行计划来改进未来SQL语句的执行性能。
A. `DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE`过程会将执行计划加载到SQL计划基线中,并且这些计划默认是`ACCEPTED`状态(即`ACCEPTED`为`yes`),除非特别指定不这样做。
B. 如上所述,加载到SQL计划基线的执行计划默认会被接受(`ACCEPTED`为`yes`)。
C. `FIXED`状态是指执行计划被强制使用,即使优化器找到了成本更低的计划。`DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE`过程不会自动将计划设置为`FIXED`状态,这需要通过其他`DBMS_SPM`包中的过程来设置。
D. 执行计划在被加载到SQL计划基线时,它们默认就是启用的(`ENABLED`为`yes`),除非特别指定不启用它们。不过,需要注意的是,`ENABLED`状态与`ACCEPTED`状态是两个不同的概念。`ENABLED`状态指的是计划是否可用,而`ACCEPTED`状态指的是计划是否已经被优化器接受并可能用于执行。
0
1 241
分享
评论
热门数说



