数据字典在sga的哪一个组件中缓存_【赵强老师】Oracle数据库的内存结构

8c60e6b4fb19fa908fe1c3189acee488.png

首先,我们通过一张图片来了解一下Oracle数据库的内存结构,如下:

5149054f86109a01f348e3cf7d3b02cb.png

每个数据库实例有两个关联的内存结构—系统全局区(SGA),程序全局区(PGA)。

  • 系统全局(SGA):一组共享的内存结构(称为SGA 组件),其中包含一个OracleDB 实例的数据和控制信息。SGA 由所有服务器进程和后台进程共享。SGA 中存储的数据有高速缓存的数据块和共享SQL 区域等;SGA的大小由参数sga_target决定。
3f8d9498b918ed565b922f81eec7e378.png
  • 程序全局区(PGA):包含某个服务器进程或后台进程的数据及控制信息的内存区域。PGA 是Oracle DB 在服务器进程或后台进程启动时创建的非共享内存。服务器进程对PGA 的访问是独占式的。每个服务器进程和后台进程都具有自己的PGA。PGA的大小由参数pga_aggregate_target决定。
89d943dcc7de4d92b1c7ad06a2fbd3b5.png

SGA几个关键组件做以说明:

  • 共享池:shared pool,用于缓存可在用户间共享的各种构造,比如给定SQL 语句的语法分析树和执行计划。
401c971b57b7f7d4bac3d2c617cb4aef.png
  • 数据库缓冲区高速缓存:buffer cache,从数据库中检索到的数据块是缓存在此,数据块从此内存组件对数据块进行操作,降低了硬盘IO负担,如果用户进程所需的数据在该区域能很找到,我们称之为高速缓存区命中,高的命中率反映出来的效果就是操作反应快,这点很好理解,数据库优化中很有必要考虑这点
7fad7b570a137f6a14f2368926bf8684.png

  在buffer cache中,存在以下的缓冲区:

(*)KEEP 缓冲区池:一种专用数据库缓冲区高速缓存,用于长时间在内存中保留数据块。一些频繁使用的数据块可相对长期的保留在此,不至于每次都从硬盘获取,从而优化了数据库的性能;

(*)RECYCLE 缓冲区池:一种专用数据库缓冲区高速缓存,用于从内存中快速回收或删除数据块。相对于KEEP的对立面,很好理解;

(*) nK 缓冲区高速缓存:多种专用数据库缓冲区高速缓存中的一种,用于存放大小不同于默认数据库块大小的数据块。注意默认数据块为8K

  • 重做日志缓冲区:log buffer,用于存放有关对数据库所做更改的信息,重做信息在写入磁盘中重做日志文件(即redo文件)前,将缓存在此处。
00df3e81085ea43620f84bfbff0423af.png
  • 大型池,用于为某些大型进程(例如Oracle 备份和恢复操作)和I/O 服务器进程提供大型内存分配。
29437ba8ec11a3ea69dad0777facbf38.png
  • Java池和流池
e4877410575417139b04e0927b5896b5.png
881bc308254654d9853f24f52b65adae.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值