输入banner图图片脚本导航/分类

Oracle专家高级编程 第二章 内存结构

可以加快数据库的操作速度

数据在重做缓存驻留时间不会太长

  • 每3秒
  • 有人提交时
  • 1/3满时,或包含了1MB的高速缓存的重做日志数据

数10MB用于重做缓存通常是对呢困的浪费,在init.ora中

LOG_BUFFER对应重做缓存的默认大小,最大是512KB和128个CPU

块缓冲区高速缓存

 技术图片

共享池(Shared Pool)

共享池是SGA中最关键的内存片段,特别在性能上和可伸缩性上,太小或者太大的共享池会扼杀性能,是系统暂停

共享池是Oracle高速缓存许多位"程序"数据的地方,分析一个查询时,结果就在高速缓存

如果上千个会话运行相同的代码,装载一个代码副本,所有会话共享它

Oracle在共享池中存储系统参数,数据字典高速缓存是有关数据库对象信息的高速缓存,也在此存储

共享池的特点是有大量的小块内存(约4KB),在LRU基础上管理

中断Oracle共享池的最简单方法是不使用绑定变量(bind variable):

  • 系统话费大量时间分析查询
  • 系统消耗极大资源管理共享池对象,无法重用

大池

用来分配大块内存,处理比共享池更大的内存

Oracle需要类似于为块高速缓冲区高速缓存而实现的回收(RECYCLE)和保持(KEEP)缓冲区

这恰恰是大池和共享池的功能,在大池中分配的内存在堆中管理,内存块一但被释放就会被其他进程使用

哪个内存需要重用,Oracle停止对改内存块的引用,使用大池的对象:

  • MTS--在SGA中分配UGA盘区
  • 语句的并行执行(Parallel Execution of statements)--允许进程间消息缓冲区的分配,协调并行查询服务器
  • 备份(BACK)--用于RMAN磁盘IO缓存

没有一个能在设计来管理小块内存的LRU缓冲区池中管理

Java池(Oracle 8添加的)

Java池总量固定

在专用服务器模式中,Java池包含每个Java类的共享部分实际上被每一个会话使用

在MTS模式下执行时,Java池包括

  • 每个Java类的共享部分
  • 一些用于每个会话状态的UGA,它们在SGA中的java_pool中分配,其他的UGA一般位于共享池,如果配置了大池,UGA在大池分配 

Oracle专家高级编程 第二章 内存结构

标签:字典   并行   retain   安装   oba   位置   部分   速度   share