Oracle SGA PGA UGA

SGA 系统全局区(System Global Area),几乎所有进程都会访问SGA中某一个点。

PGA 进程全局区(Process Global Area),进程或者线程专属内存区,其它进程或线程不能访问,由进程或者线程本地分配,在专用模式下

       PGA内存包含UGA,PGA其它区用于排序,位图合并,以及散列

UGA 用户全局区(User Global Area),这段内存与会话相关联,共享服务模式下UGA在SGA区,专用服务器模式下UGS在SGA区

 

SGA由谁在分配?

每个进程都有一个PGA区?PGA是一段内存,这段内存供各个进程和线程用,关于排序和散列操作,会有一个工作区的概念,每一个排序都会有一个工作区。

 

 

PGA 中进UGA 内存 手动管理与自动管理:

手动管理:采用这种方法管理,需要指定如果一个特定的进程允许使用多少内存来完成排序或散列

自动管理:只需要指定在系统范围内可以使用多少内存。

 

手动内存管理相关参数:

SORT_AREA_SIZE:在信息换出磁盘之前,用于对信息排序的内存总量

SORT_AREA_RETAINED_SIZE:排序完成后用于保存已排序数据的内存总量,也就是说,如果
          SORT_AREA_SIZE 是512 KB,SORT_AREA_RETAINED_SIZE 是256 KB,那么服务器进程最初处理查
          询时会用512 KB 的内存对数据排序。等到排序完成时,排序区会“收缩”为256 KB,这256 KB
          内存中放不下的已排序数据会写出到临时表空间中。

HASH_AREA_SIZE:服务器进程在内存中存储散列表所用的内存量

          散列联结时会使用这些散列表结构,通常把一个大集合与另一个集合联结时就会用到这些结构。两个集合中较小的一
         个会散列到内存中,散列区中放不下的部分都会通过联结键存储在临时表空间中。

SORT_AREA_SIZE~SORT_AREA_ RETAINED_SIZE 这部分内存一般从PGA 分配,SORT_AREA_RETAINED_SIZE 这部分内存会在UGA 中分配

 

使用*_AREA_SIZE 参数时,需要记住以下重要的几点:
这些参数控制着SORT、HASH 和/或BITMAP MERGE 操作所用的最大内存量。一个查询可能有多个操作,这些操作可能都要使用这个内存,这样会创建多个排序/散列区。要记住,可以同时打开多个游标,每个游标都有自己的SORT_AREA_RETAINED 需求。所以,如果
把排序区大小设置为10 MB,在会话中实际上可以使用10 MB、100 MB、1 000 MB 或更多RAM。这些设置并非对会话的限制;它们只是对一个操作的限制。你的会话中,一个查询可以有多个排序,或者多个查询需要一个排序。这些内存区都是根据需要来分配的。如果像我们一样,将排序区大小设置为1 GB,这并不是说你要分配1 GB 的RAM,而只是说,你允许Oracle 进程为一个排序/散列操作最多分配1 GB
的内存。

 

一般地,随着在一个数据库上运行类似应用的用户数的增加,排序/散列所用的内存量也会线性增长。如果有10 个并发用户,排序区大小为1 MB,这就会使用10 MB 的内存,100 个并发用户可能使用100 MB,1 000 个并发用户则可能使用1 000MB,依此类推。

 

内存控制:根据上一条,手动分配很难保证Oracle 实例“合法”地使用内存,甚至不可能保证。你不能控制实例要用的内存量,因为你根本无从控制会发生多少并发的排序/散列。很有可能要使用的实际内存(真正的物理空闲内存)过多,而机器上并没有这么多可用内存。

 

 

自动管理

 

,理论上讲,如果一台机器有2 GB 的物理内存,可以分配768 MB 内存给SGA,768 MB内存分配给PGA,余下的512 MB 内存留给操作系统和其他进程。

 

 WORK_SIZE_POLICY:这个参数可设置为MANUAL或者AUTO,如果是MANUAL,会使用排列区和散列区大小参数来控制分配内存量;如果是AUTO,分配的内存量会根据数据库中当前工作负载而变化。默认为AUTO,推荐使用AUTO

 

PGA_AGGREGATE_TARGET:这个参数会控制实例为完成排序,散列的所有工作区总共应分配多少内存,

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值