ORACLE之KEEP池和RECYCLE池的使用ORACLE之KEEP池和RECYCLE池的使用.pdf

ORACLE之KEEP池和RECYCLE池的使用ORACLE之KEEP池和RECYCLE池的使用.pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ORACLE之KEEP池和RECYCLE池的使用ORACLE之KEEP池和RECYCLE池的使用

栢图数据库实验室 KEEP 池和RECYCLE 池的使用 2012 年5 月 栢图数据库实验室 KEEP 池和RECYCLE 池的使用 KEEP 池和RECYCLE 池的使用 1 Oracle 的数据缓冲池 在Oracle 进行数据处理的过程中,代价最昂贵的就是物理I/O 操作了。同样的数据从内存中得到要比从磁 盘上读取快的多。因此,优化Oracle 的一个重要的目标就是尽可能的降低物理I/O 操作。 Oracle 的Buffer Cache 用于缓存从磁盘中读取的数据,当Oracle 需要查找某些信息的时候,首先会在Buffer Cache 中寻找,如果找到了,则直接将结果返回。如果找不到,则需要对磁盘进行扫描,Oracle 将在从磁盘扫 描得到的结果返回的同时,会把这些数据在Buffer Cache 中也保留一份,如果下次需要访问相同的数据块的时 候,则不需要再次扫描磁盘,而是直接从Buffer Cache 中读取即可。 当Buffer Cache 存储空间已满,但是又有新的数据需要存放在Buffer Cache 中,这时Oracle 会将这部分新 的数据替换掉Buffer Cache 中的一部分数据。Oracle 通过LRU (Least Recent Used List )算法(最近最少使用算 法)来确定哪些数据要被清除出Buffer Cache 。 Buffer Cache 中的内存由两个链表组成,Write List (写链表)和LRU 链表。写链表包含那些还没有被写到 磁盘上的脏的缓冲。LRU 链表包括空闲缓冲区、目前正在使用的Pinned Buffer 和还没有移到写链表中的脏缓冲 区(Dirty Buffer )。如果Oracle 访问了缓冲区中的数据,则会把这部分缓冲移到LRU 表的MRU 端(Most Recent Used )。当Oracle 需要寻找空闲缓冲时,它会从LRU 链表的LRU 端开始寻找。在寻找过程中,如果发现了脏 的缓冲,就把它移到写链表中。当Oracle 找到一个空闲缓冲时,就会停止有哪些信誉好的足球投注网站,如果有哪些信誉好的足球投注网站缓冲数量超过了阈值 的限制还一直找不到空闲缓冲,则会停止有哪些信誉好的足球投注网站,启动DBWn 后端进程将一些脏的缓冲写到磁盘上。 如果用户执行的是全表扫描的操作,这些操作产生的数据缓冲不会放到LRU 端的MRU 端,而是放到LRU 端。因为Oracle 认为全表扫描得到的数据只是暂时的需要,这些数据以后被重用的机会很少,应该快速的清除 出缓冲区,把空间留给其他的更常用的数据。可以在表的级别上改变这种处理方式。在建表的时候指定Cache 语句会使得这张全表扫描得到的数据也放在LRU 链表的MRU 端。 由于Oracle 10g 版本启用了SGA 自动管理,所以没办法直接调整数据缓冲区的大小,所以只能在合理的范 围内调整SGA 的大小从而尽可能的间接的提升数据缓冲区的使用空间。 2 KEEP 池和RECYCLE 池 如果内存足够大,可以容纳所有的数据,则访问任何数据都可以从内存中直接获得,那么效率肯定是最高 的。但是在实际应用当中,经常是数据库的大小达到了几百个GB 甚至是几个TB,而Oralce 的可用内存只有几 个GB 大小。缓存中缓存的数据只能占到整个数据库数据的很小一部分,因此,这就要求必须合理的分配内存 的使用。 如果可使用的内存空间比较小,导致数据库缓冲区的命中率比较低,则可以通过配置KEEP 池和RECYCLE 池,把性质不同的表分离到不同的数据缓冲区,以提高命中率,降低此操作对正常访问的影响。 默认情况下,所有的表都是用default 池,它的大小就是缓冲区Buffer Cache 的大小,由初始化参数 db_cache_size 来决定。如果在建表或者修改表的时候指定STORAGE (BUFFER_POOL KEEP )或者STORAGE (BUFFER_POOL RECYCLE )语句,就设置这张表使用KEEP 或者RECYCLE 缓冲区。这两个缓冲区的大小 分别由初始化参数db_keep_cache_size 和db_recycle_cache_size 来决定。 SQL show parameter cache_size NAME TYPE VALUE

您可能关注的文档

文档评论(0)

pfenejiarz + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档