利用 SGA 共享池,避开 parse 阶段

同一功能同一性能不同写法 SQL 的影响
如一个 SQL A 程序员写的为
Select * from zl_yhjbqk
B 程序员写的为
Select * from dlyx.zl_yhjbqk(带表所有者的前缀)
C 程序员写的为
Select * from DLYX.ZLYHJBQK(大写表名)
D 程序员写的为
Select * from DLYX.ZLYHJBQK(中间多了空格)
以上四个 SQL ORACLE 分析整理之后产生的结果及执行的时间是一样的,但是从
ORACLE 共享内存 SGA 的原理,可以得出 ORACLE 对每个 SQL 都会对其进行一次分析,
并且占用共享内存,如果将 SQL 的字符串及格式写得完全相同则 ORACLE 只会分析一次,
共享内存也只会留下一次的分析结果,这不仅可以减少分析 SQL 的时间,而且可以减少共
享内存重复的信息, ORACLE 也可以准确统计 SQL 的执行频率。
不同区域出现的相同的 Sql 语句要保证查询字符完全相同, 建议经常使用变量来代替常量,
以尽量使用重复 sql 代码, 以利用 SGA 共享池, 避开 parse 阶段,防止相同的 Sql 语句被
多次分析,提高执行速度。
因此使用存储过程,是一种很有效的提高 share pool共享率,跳过 parse 阶段,提高效率的
办法。

如一个SQL A 程序员写的为
Select * from zl_yhjbqk
B 程序员写的为
Select * from dlyx.zl_yhjbqk(带表所有者的前缀)
C 程序员写的为
Select * from DLYX.ZLYHJBQK(大写表名)
D 程序员写的为
Select * from DLYX.ZLYHJBQK(中间多了空格)
以上四个 SQL ORACLE 分析整理之后产生的结果及执行的时间是一样的,但是从
ORACLE 共享内存 SGA 的原理,可以得出 ORACLE 对每个 SQL 都会对其进行一次分析,
并且占用共享内存,如果将 SQL 的字符串及格式写得完全相同则 ORACLE 只会分析一次,
共享内存也只会留下一次的分析结果,这不仅可以减少分析 SQL 的时间,而且可以减少共
享内存重复的信息, ORACLE 也可以准确统计 SQL 的执行频率。
不同区域出现的相同的 Sql 语句要保证查询字符完全相同, 建议经常使用变量来代替常量,
以尽量使用重复 sql 代码, 以利用 SGA 共享池, 避开 parse 阶段,防止相同的 Sql 语句被
多次分析,提高执行速度。
因此使用存储过程,是一种很有效的提高 share pool共享率,跳过 parse 阶段,提高效率的

办法。

原出处不详

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值