暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
Oracle-SQL优化(50条).doc
853
32页
34次
2023-09-13
5墨值下载
Oracle
数据库性能优化的
50
条方法
1.
选用适合的
ORACLE
优化器

的优化器共有


基于规则

基于成本

选择性


设 置缺省的优化器
可以通过对

文件中

参数的
各种声明
 ! 
你当然也在
"
句级或是会话
#$##
级对其进行覆盖

为了使用基于成本的优化器
%#&%#$'()*$
你必须经常运行
+,*$
命令
以增加数据
库中的对象统计 信息
-$###
的准确性

如果数据库的优化器模式设
置为选择性

那么实际的优化器模式将和是否运行过
+,*$
命令
有关

如果
+$
已经被
+,*$

优化器模式将自动成为
%
反之
数据
库将采用

形式的优化器


在缺省情况下

采用

优化器

为了避免那些不必要的全表
扫描
./+++$#
你必须尽量避免使用

优化器
而直接采用基
于规则或者基于成本的优化器

2.
访问
Table
的方式

采用两种访问表中记录的方式


全表扫描

全表扫描就是顺序地访问表中每条记录

采用一次读入多个
数据块
'#$+0
的方式优化全表扫描

通过
 
访问表

你可以采用基于
 
的访问方式情况
提高访问表的效率
 
包含了表中记录的物理位置信息

采用索引
12
实现 了数据和存
放数据的物理位置
 
之间的联系

通常索引提供了快速访问
 
方法
因此那些基于索引列的查询就可以得到性能上的提高

3.
共享
SQL
语句
为 了不重复解析相同的
"
语句
在第一次解析之后

"
语句存
放在内存中
这块位于系统全局区域
3#,#$)4++$
的共享池
#5$'/6$(+
中的内存可以被所有的数据库用户共享

因此
当你执行
一个
"
语句
有时被称为一个游标
如果它
和之前的执行过的语句完全相同

就能很快获得已经被解析的语句以
及最好的
执行路径

的这个功能大大地提高了
"
的执行性能并节省了内存的
使用


可惜的是

只对简单的表提供高速缓冲
5$/6$4
这个功
能并不适用于多表连接查询

数据库管理员必须在

中为这个区域设置合适的参数
当这个内存区域越
就可以保留更多的语句
当然被共享的可能性也就越大了

当你向

提交一个
"
语句

会首先在这块内存中查找相同的
语句

这里需要注明的是

对两者采取的是一种严格匹配
要达成共享
"
句必须
完全相同
包括空格
换行等


共享的语句必须满足三个条件

A.
字符级的比较
:
当前被执行的语句和共享池中的语句必须完全相同


例如

7!8

和下列每一个都不同
7.)8
$+$7!))(8
7!8
B.
两个语句所指的对象必须完全相同
:
例如

用户 对象名 如何访问
Jack #++)(9$#,,)
 0,(/+#,,)
+'$+(/+#,,)
Jill
sal_limit private synonym
Work_city public synonym
Plant_detail table owner
考虑一下下列
SQL
语句能否在这两个用户之间共享
.
"
能否共享 原因
#$+$):#+(.)
#++)8
不能 每个用户都有一个
(9$
#,,)&#++)
它们
是不同的对象,在不同的用
户名下,只能内部访问
#$+$/7;.)<0,
<5$$#'$#
+0$=1 >=8
两个用户访问相同的对象
(/+#,,)&
<0,
#$+$#'$#+.)
<0,
(+'$+
<5$$,'?,'
不能 用户
-0
通过
(/+
#,,)
访问
(+'$+
-++
是表的
所有者
对象不同
Synonym
C.
两个
SQL
语句中必须使用相同的名字的绑定变量
(bind variables)
例如:第一组的两个
"
语句是相同的
可以共享

而第二组中的两个语句是不
同的
即使在运行时
赋于不同的绑定变量相同的


#$+$()$.)($(+$<5$$(?+0@(8
#$+$()$.)($(+$<5$$(?+0@(8

#$+$()$.)($(+$<5$$(?+0@'8
#$+$()$.)($(+$<5$$(?+0@9'8
.
优化方法:
1.
选择最有效率的表名顺序
(
只在基于规则的优化器中有效
)
of 32
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜