分类: Oracle
2008-04-22 19:44:54
图2.1 SQL计划控制主面板 |
注意在我们早前的实验中产生的SQL计划基线在这里列出来了,包括它们当前的状态和可用性。在下面的图2.2中,我将从面板中那些可用的调整集中选择SQL调整集STS_SPM_200:
图2.2 载入SQL调整集到SMB中 |
一旦我选择了恰当的SQL调整集并点击了载入(Load)按钮,Oracle11g直接从选择的STS中自动载入SQL语句到SMB中,如下面图2.3:
图2.3 SQL调整集载入的结果 |
注意有五个SQL计划基线的状态都是ENABLED和ACCEPTED,意味着当一条SQL语句遇到了匹配的hash值时,CBO会使用它们作为直接的候选者。点击名称(Name)栏的链接可以查看每个SQL计划基线的详细情况。下面是选择基线名称为SYS_SQL_685ea4c28ec1a586的结果:
图 |
图 |
概念证明
为了证明潜在的SQL语句性能倒退减少了或完全消除了,现在我将简单地执行SPM_2_1.SQL中相同的五条SQL语句,并检验CBO的确选择了预先载入的SQL计划基线而不是执行一个新的执行计划效率更低的解析。判断这个的最简单的方法是为这五条语句执行DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINE存储过程,当为FORMAT参数解析TYPICAL+NOTE的值时需要显示CBO已经选择的计划,如果CBO的确选择了一个现有的SQL计划基线作为它的执行计划,+NOTE指令指示存储过程显示一条记录。列表2.4显示了为SPM_2_1.sql中的五条语句执行这个存储过程的结果。