没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
oracle 优化
选用适合的 优化器
的优化器共有 种:
(基于规则)
(基于成本)
(选择性)
设置缺省的优化器,可以通过对 文件中 参数的各种声明,如
, , , , 你 当 然 也 在 句 级 或 是 会 话
( ! )级对其进行覆盖。
为了使用基于成本的优化器(", #" !$%&'(!) , 你必须经常运行 )*(!
命令,以增加数据库中的对象统计信息(+! & & )的准确性。
如果数据库的优化器模式设置为选择性(),那么实际的优化器模式将和是否运
行过 )*(! 命令有关。 如果 )! 已经被 )*(! 过, 优化器模式将自动成为 ", 反之,
数据库将采用 形式的优化器。
在缺省情况下, 采用 优化器,为了避免那些不必要的全表扫描( ,-))
)! ) , 你必须尽量避免使用 优化器,而直接采用基于规则或者基于成本的
优化器。
.访问 )! 的方式 采用两种访问表中记录的方式:
全表扫描
全表扫描就是顺序地访问表中每条记录。 采用一次读入多个数据块($ !
)/)的方式优化全表扫描。
通过 访问表
你可以采用基于 的访问方式情况,提高访问表的效率, 包含了表中记
录的物理位置信息…… 采用索引(01)实现了数据和存放数据的物理位置
()之间的联系。 通常索引提供了快速访问 的方法,因此那些基于索引列
的查询就可以得到性能上的提高。
共享 语句
为了不重复解析相同的 语句,在第一次解析之后, 将 语句存放在内存中。
这块位于系统全局区域 2( * !'3))!)的共享池( 4!$-5!%))中的内存
可以被所有的数据库用户共享。 因此,当你执行一个 语句(有时被称为一个游标)时,
如果它和之前的执行过的语句完全相同, 就能很快获得已经被解析的语句以及最
好的执行路径。 的这个功能大大地提高了 的执行性能并节省了内存的使用。
可惜的是 只对简单的表提供高速缓冲(4!-5!3) ,这个功能并不适用于
多表连接查询。
数据库管理员必须在 中为这个区域设置合适的参数,当这个内存区域越大,就可
以保留更多的语句,当然被共享的可能性也就越大了。
当你向 提交一个 语句, 会首先在这块内存中查找相同的语句。
这里需要注明的是, 对两者采取的是一种严格匹配,要达成共享, 语句必须
完全相同(包括空格,换行等)。
共享的语句必须满足三个条件:
字符级的比较:
当前被执行的语句和共享池中的语句必须完全相同。
例如:
6;
和下列每一个都不同
6,';
!)!6''%;
6;
"两个语句所指的对象必须完全相同:
例如:
用户 对象名 如何访问
7/ ))'%8! **'
/*%-) **'
)$!)%-) **'
7)) ))'%8! **'
/*%-) **'
)$!))!9!
考虑一下下列 语句能否在这两个用户之间共享。
能否共享 原因
!)!':; )%<,' ))'=不能 每个用户都有一个 %8! **'# ))'>它们是
不同的对象
!)!-;6?,'9/*94!! $! )/!@0A@= 能 两个用户访问相同的对象 %-)
**'#9/*
!)! $! >)&,'9/*>%)$!)94!!*$B*$不能 用户
+/通过 %8! **' 访问 %)$!)而 +))是表的所有者>对象不同
两个 语句中必须使用相同的名字的绑定变量($8)! )
例如:第一组的两个 语句是相同的(可以共享),而第二组中的两个语句是不同的
(即使在运行时,赋于不同的绑定变量相同的值)
!)!%, '!,'%!%)!94!!%B:)/%;
!)!%, '!,'%!%)!94!!%B:)/%;
!)!%, '!,'%!%)!94!!%B:)/$;
!)!%, '!,'%!%)!94!!%B:)/8$;
C选择最有效率的表名顺序(只在基于规则的优化器中有效)
的解析器按照从右到左的顺序处理 子句中的表名,因此 子句中写在
最后的表(基础表 $83)!)将被最先处理。 在 子句中包含多个表的情况下,
你必须选择记录条数最少的表作为基础表。当 处理多个表时, 会运用排序及合并
的方式连接它们。首先,扫描第一个表( 子句中最后的那个表)并对记录进行派序,
然后扫描第二个表( 子句中最后第二个表),最后将所有从第二个表中检索出的记
录与第一个表中合适记录进行合并。
例如:
表 "D,EC条记录
表 ".条记录
选择 ". 作为基础表 (最好的方法)
!)!-(6) ,',.执行时间 ?FD 秒
选择 ". 作为基础表 (不佳的方法)
!)!-(6) ,'.,执行时间 .D?F 秒
如果有 个以上的表连接查询, 那就需要选择交叉表(! !&)!)作为基础表,
交叉表是指那个被其他表所引用的表。
例如: 表描述了 0 表和 2G 表的交集。
6
0>
2G>
0"0???0.???
00B0
00B0
将比下列 更有效率
6
>
0>
2G
0B0
00B0
00"0???0.???
H 子句中的连接顺序。
采用自下而上的顺序解析 子句,根据这个原理,表之间的连接必须写在
剩余52页未读,继续阅读
资源评论
cailibin
- 粉丝: 4
- 资源: 7018
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功