Oracle内存结构的相关篇SGA

数据库 Oracle
Oracle内存结构研究中,SGA作为共享内存区,它是由N种部分组成的,以下就是文章的相关详细内容的介绍,望你会有会有所体会。

以下的文章主要介绍的是Oracle内存结构的相关研究-SGA篇,前两天我在《Oracle内存结构研究-PGA篇》中看到有关于PGA的介绍。PGA作为一个服务器进程的专用的私有内存区,而SGA则是共享内存区。

在《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可以达到的***大小,改变需重启数据库。

 

下面将详细介绍在Oracle内存结构研究-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。9i之前数据库只能使用相同的块大小。9i开始同一个数据库可以使用多种块大小(2KB,4KB,8KB,16KB,32KB),这些块需要在各自的db_nk_cache中缓存。如果为不同的表空间指定了不同的块大小,需要为其设置各自的缓冲区。

 

3, 重做日志缓冲区(Redo log buffer):

数据写到重做日志文件之前在这里缓存,在以下情况中触发:

 

每隔3秒

 

缓存达到1MB或1/3满时

 

用户提交时

 

缓冲区的数据写入磁盘前

 

上述的相关内容就是对Oracle内存结构研究-SGA篇的描述,希望会给你带来一些帮助在此方面。

【编辑推荐】

  1. Oracle数据库中表的2种连接方式
  2. Oracle表列的修改的流程
  3. Oracle位图索引相关特点介绍
  4. Oracle索引如何提高数据库的查询效率
  5. Oracle 11g 闪回数据归档简介
责任编辑:佚名 来源: 博客园
相关推荐

2010-10-28 14:29:39

Oracle内存结构

2010-04-02 16:53:34

Oracle内存结构

2010-04-12 15:40:48

Oracle SGA

2010-04-12 16:03:12

Oracle SGA设

2009-02-01 10:45:18

Oracle数据库性能调整

2009-10-23 16:03:40

Oracle 10g系内存管理

2011-08-23 14:47:29

Oracle 10g内共享池

2010-04-09 15:15:01

Oracle SGA

2018-10-12 11:11:39

Oracle内存结构

2011-08-23 15:04:41

Oracle 10g内程序全局区排序区

2010-04-13 15:49:02

Oracle SGA

2011-07-29 15:58:53

SGAOracle

2010-03-31 10:40:11

Oracle事例

2010-03-31 14:20:23

Oracle内存结构

2010-04-19 10:23:05

Oracle内存结构

2010-04-08 10:02:15

Oracle体系结构

2010-03-31 10:30:03

Oracle 10g

2015-10-28 15:35:33

Oracle策略

2010-04-14 11:35:57

Oracle内存结构

2009-11-20 11:02:28

点赞
收藏

51CTO技术栈公众号