PGA和UGA的探究

PGA和UGA的探究[@more@]

PGAUGA的探究

PGAUGA一直是我很迷惑的两个概念,今天就好好学习一下这两个概念。

Oracle的官方定义中:PGA的定义是:

A program global area (PGA) is a memory region which contains data and control information for a server process.

意思就是说PGA就是服务器进程的内存区域。详细来说应该是对于每一个进程或者现成线程的私有内存区域,并不能被其他进程或者线程访问。是由调用c函数malloc()或者memmap()分配的一片内存区域,在生命周期中可以增长或者缩小。

UGA事实上是会话的状态,是会话能够获得的内存区域。UGA的位置通常和实如何连接Oracle数据库有关,如果连接数据库是使用的是共享服务器的模式的话,UGA是存在于SGA上,这样每个共享内存进程都能够连接。如果是专用服务器模式的话,UGA则是存放在PGA中。这样就可以理解PGA是大于或者等于UGA的。

除了UGAPGA中还用于内存排序,bitmap merging,hashing。在Oracle9i之后,有两种方式管理PGA

手工PGA内存管理

自动PGA内存管理

这种内存的管理方式,是由于使用的不同有很大的不同。在Oracle9i中,如果使用了共享模式的数据库连接,将只能使用手工管理PGA的方式,但是在Oracle10g以后就可以在共享模式的环境下,使用手工管理PGA的方式。PGA的管理方式是有数据库初始参数workarea_size_policy来控制。这个参数有两个选择:auto, manual

手工管理PGA

手工管理PGA需要设置以下三个参数:

Sort_area_size

这个参数是用于排序的内存的数量。

Sort_area_retained_size

这个参数是在排序完成之后,用于保持排序数据的内存数量

Hash_area_size

这个参数十用于存储内存哈希表的内存数量。这个参数用于hash连接,用于两个比较大的表之间的连接。

这些参数控制着在Oracle进行排序&hash数据的时候的空间数量。当然如果需要排序的数据量相对大于所设置的内存数量的话,系统将在临时表空间中进行。

这个参数中Sort_area_retained_size将是存放在UGA(其实也是在PGA,但是也是UGA的部分),而Sort_area_size-Sort_area_retained_size则是在PGA上分配。

http://www.itpub.net/507159.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-908043/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/222350/viewspace-908043/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值