Archive for 二月 21st, 2008

Oracle9i 优化器介绍

星期四, 二月 21st, 2008

1
Oracle9i 优化器介绍
By Davis
E-Mail:todavis@gmail.com
Blog:davis.blogchina.com
选择合适的优化器目标
默认情况下,CBO 以最佳吞吐量为目标,这意味着Oracle 使用尽可能少的资源去处理
被语句访问到的所有行;当然CBO 也可以用最快的响应速度来优化SQL,这意味着Oracle
用尽可能少的资源去处理被语句访问到的第一行或前面少数行,当然这种情况对于整个语句
来说可能消耗更多的资源。
优化器产生的执行计划会因“优化器目标”的不同而不同。如果以最佳吞吐量为目标,
结果更倾向于使用全表扫描而不是索引扫描,或者使用排序合并连接而不是嵌套循环连接;
如果以最快的响应速度为目标,其结果则通常倾向于使用索引扫描和嵌套循环连接。
例如,假使你有一个语句既能运行于嵌套循环连接又能运行于排序合并连接,排序合并
连接能够较快的返回全部查询结果,而嵌套循环能快速的返回第一行或前面少数行结果。如
果你是以提高吞吐量为优化器目标,优化器就会倾向于选择排序合并连接;如果你的优化器
目标是提高响应速度,则优化器倾向于选择嵌套循环连接。
选择优化器目标要以你的应用为基础,一般规则是:
1、 对于批处理应用,以最佳吞吐量为优化目标为好。例如Oracle报表应用程序。
2、 对于交互式应用,以最快响应速度为优化目标为好。例如SQLPLUS的查询。

(全文…)