Oracle数据库11g:SQL计划管理程序(一)(3)

日期: 2008-06-17 作者:Jim Czuprynski翻译:黄永兵 来源:TechTarget中国

  自动SQL计划捕获:一个简单的例子


  为了精确论证SQL计划管理如何为一条SQL语句选择最有效的执行计划,我将从一个相当简单的例子开始:一条SQL语句(查看列表1.1)从销售历史(SH)方案中的几个表中检索一个相对小的数据子集。注意已经用一个恰当的注释(SPM_1.1)标记了该SQL语句,以便在它朝一个可接受的计划基线发展过程中,能很容易地跟踪它的状态。


  现在我已经准备好自动捕获SQL计划基线,在列表1.2中显示,我将为这个会话设置OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES初始化参数为TRUE,以激活自动捕获SQL计划基线,并且我将设置OPTIMIZER_MODE为ALL_ROWS,以便CBO优化器优化SQL语句对应的执行计划,返回尽可能是最有效的所有结果集。为了保证该会话会应用任何被捕获的SQL计划基线,我还设置了初始化参数OPTIMIZER_USE_SQL_PLAN_BASELINES为TRUE(它的默认值),这个参数控制CBO是否会检查如果SQL语句再次重复执行时应该被评估以尽可能得到最佳的执行计划。


  然后我会执行两次SPM_1.1语句,第一次执行是保证语句的执行被记录到了SMB,第二次执行该语句引起它的执行计划自动接受作为一个SQL计划基线。为了显示我实验中此时SMB的状态,我将执行列表1.3中的查询,它依靠DBA_SQL_PLAN_BASELINES视图,从输出的结果中可以看出,当前的语句实际上已经通过自动捕获被捕获到SMB中了。(注意我已经缩写了SQL语句的hash值和它的计划基线,保留了它们最后的八个字符以便更容易处理)


  最后,我将修改OPTIMIZER_MODE参数的值为FIRST_ROWS,以便CBO优化SQL语句相对应的执行计划,尽可能返回前面的几行结果集—明显与ALL_ROWS设置相对,ALL_ROWS力求返回最大的结果集。列表1.4展示了我发布的实现这个的命令,与查询DBA_SQL_PLAN_BASELINES视图的结果一样,这个查询输出清晰地显示了两个执行计划都被存储在SMB中,但是计划07e0351f与计划ddc1fcd0的优化成本2388相比实际上效率更好—它的优化成本只有757,因此,SPM只标记了第一个计划为ENABLED和ACCEPTED。


  最后,列表1.5显示了两个执行计划的详细情况,我已经利用DBMS_XPLAN的新存储过程DISPLAY_SQL_BASELINE显示了它们的正确的执行方法,注意SPM已经捕获了相应的SQL计划基线以及它所有的优化器统计。


  下一步


  我已经介绍了SQL计划管理原理和一些最基本的如何有效使用它的例子,但是还有太多的性能调整情景,在本系列的下一篇文章中,我将深入研究如何:


  ◆通过手工方法捕获SQL计划基线
  ◆使用SQL计划基线为应用程序升级进行预演
  ◆手动演变一个SQL计划基线


  参考书目和附加读物


  我希望我在本文中已经给你彻底展示了技术方面的特征,同时我相信还有许多更好的文档可供参考,因此,在你尝试在一个生产环境中部署前,我强烈建议你密切关注对应的Oracle文档,以获取更清晰的理解,请注意我已经在下面列出了Oracle数据库11gR1有关的文档:


  B28274-01 Oracle Database 11gR1 Performance Tuning Guide
  Oracle数据库11gR1性能调整指南
  B28279-02 Oracle Database 11gR1 New Features Guide
  Oracle数据库11gR1新特征指南
  B28419-02 Oracle Database 11gR1 PL/SQL Packages and Types Reference
  Oracle数据库11gR1 PL/SQL包和类型参考


  下面在Oracle Metalink上的记录也提供了关于Oracle 8i及更高版本存储概要有价值的背景信息:
  67536.1: Using Stored Outlines


  使用存储概要


  102311.1: How to Move Stored Outlines for One Application from One Database to Another
  如何为一个应用程序从一个数据库到另外一个数据库移动存储概要
  132547.1: Stored Outlines Quick Reference
  存储概要快速参考

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐