第三章 调整共享池的大小
共享池包括:
1.数据字典高速缓存
用于存储共享的sql和pl/sql
2.library cache
3.用于保存共享服务器连接的用户全局区UGA
用在配置大型共享池之前来保存有关共享服务器连接的信息
优化共享池要考虑的一些事项:
1.Data Dict Cache或library cache上的未命中 ,通常比大多数其他SGA内存结构上的cache未命中代价更高。所以应首先考虑优化shared pool
2.应主要关心library Cache,因为shared pool中的内存分配算法倾向与把字典数据放在内存的时间比较长,而library Cache中的数据放在内存
中的时间要短。因此,将library Cache优化到一个可以接受的命中率,即可确保Data Dict Cache的命中率可以接受。
3.如果shared pool设置太小,则server必须贡献资源,来管理有限的可用空间,这将消耗cpu资源,造成竞争
4.如果shared pool设置太大,管理碎片的开销也可能造成争用现象
SHARED_POOL_SIZE设置共享池的大小
library Cache 中使用LRU算法。把语句还原成ASCII文本的数值,并hash处理
优化的目标:
1.在OLAP环境中,要尽量避免重新分析:用变量绑定,增加代码重用;分配更多的内存给libray cache,减少未命中率;如果语句中引用的对象被
修改,则已有的执行计划将失效,需重新分析
2.减少内存碎片化:在shared pool中分配保留空间,来确保有连续的空间,用以满足大的内存需求;将经常要用的大型对象如sql和pl/sql
区连接在内存中,而不用LRU来管理;使用小的pl/sql打包函数,而不使用打的匿名块;配置大型共享池,用以oracle shared Server连接;
测量oracle shared Server连接中用于共享服务器的会话的内存使用量
v$librarycache
有关名字空间的3个关键字:
GETS 请求总数
PINS 执行的次数
RELOAD 重新分析次数
阅读(1398) | 评论(0) | 转发(0) |