当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
2015年Oracle认证考试辅导:Oracle内存结构研究-SGA篇
发布时间:2010/3/10 18:29:01 来源:城市学习网 编辑:MOON
  一、概述
  在《Oracle内存结构研究-PGA篇》一文中提到,PGA是一个服务器进程的专用的私有内存区,而SGA则是共享内存区。
  SGA由多个部分组成:
  1,固定SGA(Fixed SGA)
  2,块缓冲区(Db cache)
  3,重做日志缓冲区(Redo log buffer)
  4,Java池(Java pool)
  5,大池(Large pool)
  6,共享池(Shared pool)
  7,流池(Stream pool)
  有如下参数控制共享池相关组件大小:
  1,JAVA_POOL_SIZE:控制Java池大小。
  2,SHARED_POOL_SIZE:9i中控制共享池中占用最大的部分,10g以上控制共享池大小。
  3,LARGE_POOL_SIZE:控制大池大小。
  4,DB_*K_CACHE_SIZE:控制不同块大小的缓冲区大小。
  5,LOG_BUFFER:控制重做日志缓冲区大小。
  6,SGA_TARGET:10g以上控制自动SGA内存管理的总内存大小。
  7,SGA_MAX_SIZE:控制SGA可以达到的最大大小,改变需重启数据库。
  下面将详细介绍各个部分的作用和推荐设置。
  二、SGA各组件作用
  1,固定SGA:
  顾名思义,是一段不变的内存区,指向SGA中其他部分,Oracle通过它找到SGA中的其他区,可以简单理解为用于管理的一段内存区。
  2,块缓冲区:
  查询时,Oracle会先把从磁盘读取的数据放入内存,以后再查询相关数据时不用再次读取磁盘。插入和更新时,Oracle会现在该区中缓存数据,之后批量写到硬盘中。通过块缓冲区,Oracle可以通过内存缓存提高磁盘的I/O性能。
  块缓冲区中有三个区域:
  默认池(Default pool):所有数据默认都在这里缓存。
  保持池(Keep pool):用来缓存需要多次重用的数据。
  回收池(Recycle pool):用来缓存很少重用的数据。
  原来只有一个默认池,所有数据都在这里缓存。这样会产生一个问题:大量很少重用的数据会把需重用的数据“挤出”缓冲区,造成磁盘I/O增加,运行速度下降。后来分出了保持池和回收池根据是否经常重用来分别缓存数据。
  这三部分内存区需要手动确定大小,并且之间没有共享。例如:保持池中已经满了,而回收池中还有大量空闲内存,这时回收池的内存不会分配给保持池。
  9i开始,还可以设置db_nk_cache
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved