| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
调整共享池 对应033第二版ppt第四章
pdf附件下载 网管网www.bitscn.com
1.共享池中的主要组件
/库缓存(library cache) 主要缓存共享SQL和PL/SQL相关信息
/数据词典缓存(data dictionary cache) 缓存Dictionary objects的信息,用于解析权限,表结构等
/UGA(User global are)
在shared server模式下如果没有配置大池(Larger_pool_size=0)时,UGA会占用shared pool的空间
SGA中除Shared Pool外还有:
大池 如果使用RMAN备份 并行查询 共享服务器时应该配置
另外还有 data buffer cache(ppt第五章), redo log buffer(ppt第七章),由于
2.调整shared pool size应该考虑什么
由于库缓存和数据词典缓存的miss引起的操作时间往往比SGA中其他组件的cache miss要多,因此在SGA中 网管论坛bbs_bitsCN_com
首先应该考虑调整shared pool。而当调整shared pool时,则应该首先集中在库缓存上,因为库缓存的大小和数
据词典缓存的大小没有单独的设置,而是oracle自动按照一定的算法在shared pool中分配给他们,而按照oracle
的内存空间分配的算法,如果库缓存的命中率高的话,数据词典缓存的命中率也会较高的;库缓存的命中率高而数据词典缓存的命中率却很低的话几乎是很少的。
如果共享池很小,这往往会消耗很多CPU资源并且容易引起竞争;但是如果你把共享池设到很大,也不一定 是好事,那为什么呢?当你把共享池配得很大,是不是消耗了很多内存资源那,那么其他得组件能使用得内存资源是不是就少了,另外,在这个很大的大池中,缓冲的内容是不是很多啊,多了,在里面查找是不是就慢了。
所以说共享池虽然不能很小,但是也不是越大越好,还是要适当。
3. 共享池相关
/这个共享池是由初始化参数SHARED_POOL_SIZE来定义的,默认是8M,这个参数是动态的
/库缓存的内容
包含了Statement的文本, 分析后的Code, 以及相应的执行计划 网管u家u.bitscn@com
/数据词典缓存主要是system中的数据词典表(对象的列定义信息,用户的权限信息等)
4. 库缓存
/用来缓存共享的SQL statements 和PL/SQL块,这些可以给所有的连接用户共享。
/由LRU(最小使用最先淘汰算法)来管理, 千万不要以为是FIFO(先进先出)算法管理的
/oracle server怎样知道你要执行的Statement等被缓存了呢?
--先通过一个hash算法将Statement text运算成一个hash数值
--然后通过这个hash值去找
5 几个重要的共享池相关的锁存器(latch)
/latch也是一种锁,但是是一中由oracle server自行管理的用来保护共享的内存结构的低级锁(low lock),和后面章节讲的LOCK是由区别的,latch不用我们来维护。
/share pool latch: 用来保护共享池中的内存分配
/libray cache latch: 在shared pool中查找匹配的SQL等是起到保护作用,保护在查找的短暂过程中这个列表不会被改变
网管u家u.bitsCN.com
网管下载dl.bitscn.com
网管联盟bitsCN@com
|
0
|
评论加载中…