oracle体系的一些总结 SGA篇

  通过一段时间的学习,对oracle数据库体系有了些浅的认识通过此文方便以后复习巩固和总结。


   说到SGA ,SGA是oracle memory 中的 instance中的一块,可以被所有的session共享,比如:执行计划的共享(一些查询语句的表不用再次从database中读取了)。

 一个oracle service= SGA+PGA(相当于用户自己的一块空间),SGA 在整个 RDBMS中的地位可以看出是很高的,下面介绍以下SGA这块‘重要的东西’ 里面到底有些什么。

 从库池来分 SGA中我所了解的最多的有6个缓存区,他们分别是:Shared pool/database buffer cache/redo log buffer/large pool/stream pool/java pool,简单的介绍三个个重要的buffer cache:Shared pool/database buffer cache/redo log buffer.

Shared pool

共享池中包括 library cache,data directory cache,service result set cache,(uga)

 library cache: 是用于sql/plsql的解析场所,存放sql/plsql语句,以及他们的执行计划(软解析),便于和其他用户共享。

data directory cache:存放重要的数据字典,方便其他用户的共享(比如session1用到emp表后,session2也要用emp表就会先从这个缓存区中取出所需要的表)。

service result set cache:用来存放sql,plsql的返回值,可以选在开或者不开,是优化项,(其他session 执行相同的语句时直接从这里取出结果,对优化速度有很大的提升)

UGA(User Global Area):共享服务器连接模式下如果没有配置large pool,则UGA属于SGA的shared pool, 专用连接模式时UGA属于PGA。

database buffer cache

用来存放从磁盘上读出来的一些临时数据。

database buffer cache 可以分为 default/nodefault/recycle cache/keep cache.

default :顾名思义,就是默认的,这里默认的意思是默认块的大小,可以通过数据库 show parameter db_block_size,来查看数据库的默认块大小也可以直接从pfile参数文件中查看。

nodefault:表示不是默认的块大小,可以是16k,32k,64k ,如果想要使用非默认块大小的空间,必须先将参数db_nk_cache_size 设置大小,然后再创建自定义块大小的表空间,只需要再创建表空间的时候添加block size nk 即可,如果没有再sga中开出一个nk的buffer创建表空间的时候就会报错。

recycle cache:相关的参数是db_recycle_cache_size 默认为关闭,用途:当读取的表比较大的时候,就可以直接把表读到这里,不进入default的LRU算法中,操作完成时,不会对表进行共享,直接进行回收。

keep cache:与recycle cache的作用相反,经常进行的查询可以放进keep cache中,同样不参与LRU算法,相关的参数是db_keep_cache_size。

在database buffer cache 中的数据又可以分为3个状态:

 clear状态: 未修改或者从未使用的块。

dirty状态:又DML操作的块,有数据变更的块,必须要等instance的后台进程dbwr(写dirty block的进程)刷新到磁盘上才能释放。

pind状态:准备使用的,已经预定好的块。

(LRU算法:分为冷端和热端,如果内存不足时,优先把冷端不常用的内容踢出。)

redolog buffer:

这块buffer是用来记录当前日志的缓存区,通过instance的后台进程lgwr写入日志文件,如果在归档模式下,会通过arch进程记录到归档日志中,方便以后对数据库的恢复。

刷新日志到.log文件中的4个触发条件:

1)3s原则

2)日志buffer中达到三分之一满的时候

3)commit 提交的时候 

4)写dirty buffer block的时候,先记日志,然后dbwr再刷新到磁盘上。

dbwr刷‘脏块’的4个触发条件 :

1)ckpt ,oracle的instacne中的ckpt后台进程触发的完全检查点(检查点又分为:完全检查点,增量检查点,局部检查点)

2)当database buffer cache 的自由空间不足的时候

3)当达到‘脏块’的阈值的时候

4)表空间是read only /offline/backup模式等

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值