共享池share pool

共享池是用来共享sql或者pl/sql语句。以下详细说明

共享池组成:由库高速缓存(library cache)和数据字典调整缓存(data dictionary cache)组成。

库调整缓存(library cache):存放服务器进程(serverce process)将sq或pl/sql的正文和编译的代码以及执行计划。         原因:在进行编译时,服务器进程(serverce process)首先会在共享池中搜索是否有相同的sql或者pl/sql语句(指正文),有就停止继续编译,而直接使用已经存在的编译过的代码和执行计划。提示:库高速缓存包含了共享sql区和pl/sql区,它们分别存放sql和Pl/sql语句以及相关信息。

 

数据字典高速缓存(data dictionary cache):存放oracle服务在执行sql语句时,服务器进程(serverce process)将把数据文件、表、索引、列、用户和其它的数据对象的定义和权限的信息。           原因:存放在这儿之后,当有进程(用户)需要同样的信息,如表和列的定义,那么所有的信息都将从数据字典高速缓存中获得。巧合的是,这些信息同时也存放在oracle数据库的数据字典中,也许这就是把该内存叫做数据字典高速缓存的原因吧。

 

实现共享sql或pl/sql语句的要求:第一,库高速缓存要足够大,目的是防止sql或pl/sql语句不会很快被淘汰;第二,sql或pl/sql语句要是能共享的通用代码,原因是oracle是通过比较sql或pl/sql语句的正文来决定两个语句是否相同的,只有当两个语句的正文完全相同时,oracle才重用已经存在的编译好的代码和执行计划。

注意:oracle并没有提供直接设置库高速缓存大小的方法,只能通过设置共享池的大小来间接地设置库调整缓存的大小。

实现表和列的定义等重用要求:表和列的定义等重用的机会要比sql语句大,为达到能实现共享这些信息的目的,数据字典高速缓存应该尽可能设置大一些。

注意:和库高速缓存一样,oracle并没有提供直接设置数据字典高速缓存大小的方法,只能通过设置共享池的大小来间接地设置数据字典高速缓存的大小。

 

提示:即使把共享池设置得足够大且所使用的sq或者pl/sql语句是能共享的代码,oracle也并不能一定使用共享池内存中的代码。例如当有用户修改了某个对象的定义之后,所有使用这个对象的共享内存池中的代码全部被oracle设置为无效,因此在使用时必须重编译。

 

修改共享池大小:alter system set shared_pool_size=64M

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值