oracle 程序全局区,ORACLE PGA(程序全局区)

SGA(System Global Area),即系统全局区,管理数据库buffer cache,java,stream的内存区

PGA (Process Global Area),即程序全局区,主要用于管理进程的内存区

UGA(User Global Area),即用户全局区,处理用户会话相关信息的内存区

CGA(Call Global Area),即调用全局区,处理如排序、HASH JOIN、位图合并等工作的内存区

如果采用专用服务模式(Dedicated Server Connection)那么UGA在PGA中分配,如果采用共享服务模式(Shared Server Connection),那么UGA在SGA区的Large pool中分配。

UGA组成:

UGA=User Session+Cursor state+Sort Area Retained

User Session:用户会话,存放用户权限、角色、性能统计等信息。

Cursor state(私有SQL区):即一个句柄,或称为指针、引用指向Sql私有区。然后私有Sql区又指向共享Sql区。私有Sql区分两个部分:

固定部分:绑定信息,数据结构信息,指针。随session的创建而创建,结束而释放。

动态部分:执行sql的中间结果集,如多表关联、排序。随sql创建而创建,结束而释放。

专用模式下的PGA组成:

PGA=UGA+CGA

PGA的管理模式:手动管理模式,用户指定排序区和散列区所使用的内存,每个连接使用相同的内存。

自动管理模式,设定PGA的总量,由Oracle根据系统负载自行决定分配。

PGA内存管理模式由WORKAREA_SIZE_POLICY控制

设为MANUAL,启动手动内存管理。

设为AUTO,并且PGA_AGGREGATE_TARGET不为0时,启动自动内存管理。

手动PGA内存管理受三个参数的影响最大

SORT_AREA_SIZE 排序区,用于排序时存放排序数据的内存区,属于PGA

SORT_AREA_RETAINTED_SIZE 排序完成后用于保存排序数据的内存,属于UGA

HASH_AREA_SIZE 储存散列表的内存

这三个参数设置的情况如下:

SORT_AREA_SIZE=SORT_AREA_RETAINTED_SIZE

则排序在内存中进行,且排序结果均保存在内存中。

SORT_AREA_SIZE>SORT_AREA_RETAINTED_SIZE

则在SORT_AREA_SIZE规定的大小中排序,并保留SORT_AREA_RETAINTED_SIZE规定大小的排序数据,超出部分排序数据写到临时表中,排序完成后,把排序数据存放在SORT_AREA_RETAINTED_SIZE,最终反馈给终端。如果SORT_AREA_RETAINTED_SIZE设置为0,则与第一种情况相同。

当一个多个结果集关联时,会用到HASH_AREA_SIZE,两个集合中较小的一个会散列到内存中作为驱动表,散列区放不下的部分都会通过联结键存储在临时表空间中。HASH_AREA_SIZE过小会影响集合关联时的性能。

备注:

1)如需要排序的数据量大于SORT_AREA_SIZE,Oracle进行分批排序,将排序的结果存到临时表空间中,然后对剩余部分进行排序。最后还需要对保存在临时表中的已排序数据进行再排序,因为每次保存到临时表空间中的已排序数据只是部分数据的排序,对于整体来说只是局部排序。

2)参数的限制仅是对某个操作的限制,一个查询可以有多个操作,例如一个查询有10个排序,如果SORT_AREA_SIZE限制为5M,则10个排序占用50M排序内存。

设置PGA自动管理SQL> alter system set WORKAREA_SIZE_POLICY=auto;

SQL> alter system set PGA_AGGREGATE_TARGET=;

查看PGA建议视图SELECT trunc(pga_target_for_estimate / 1024 / 1024) pga_target_for_estimate,

to_char(pga_target_factor * 100, '999.9') || '%' pga_target_factor,

trunc(bytes_processed / 1024 / 1024) bytes_processed,

trunc(estd_extra_bytes_rw / 1024 / 1024) estd_extra_bytes_rw,

to_char(estd_pga_cache_hit_percentage, '999') || '%' estd_pga_cache_hit_percentage,

estd_overalloc_count

FROM v$pga_target_advice;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值