oracle体系结构-PGA

当客户进程访问oracle服务器时,会在oracle服务器端为用户进程分配相应的服务进程,并且为该服务进程分配相应

的内存空间来存放其数据和控制信息,每一个后台进程也需要为其分配专用的存储空间。也就是PGA


PGA是非共享的内存空间,当建立服务进程或者后台进程时,oracle会自动为其分配PGA,而当服务进程或后台进程终止时,

oracle会自动释放PGA的内存空间。


PGA的三大部分

1.私有sql区

私有sql区(private sql area)包含绑定信息(bind information)及运行时内存结构(runtime memory structure等数据。

每个提交了sql语句的会话都有一个私有sql区。每个提交了相同sql语句的用户都有自己的私有sql区,但他们使用一个共享sql区。即多个私有sql区可以和一个共享sql区相联系。

游标的私有sql区又分为两个区域,其生命周期有所不同

a.持续数据区,包含绑定信息之类的数据。此区只在游标关闭时才会释放

b.运行时间去,当执行请求的第一步创建,对于Insert,update和delete,这个区域当语句执行后释放。而对于查询,只有所有行或查询取消,该区域才会释放

私有sql区

对使用专有服务器模式私有sql区位于服务进程的PGA区

对共享服务器模式私有sql区位于SGA.,私有sql区管理由用户进程完成


而对于共享服务器和专用服务器的区别

专用服务器:对于每个用户,oracle服务器对每个用户进程执行一个专有的服务进程

共享服务器,一个共享服务器进程响应多个客户端的请求。

2.会话内存

会话内存是为会话变量和会话有关信息分配的内存。对共享服务器模式,会话内存也是共享的。

3.sql工作区

用于排序(sort)哈希连接(hash join)位图(bitmap)合并和位图创建。该区域大小即可控制也可以自动调整。

oracle9i开始,通过设置初始化参数WORKAREA_SIZE_POLICY(默认为true)和PGA_AGGREGATE_TARGTET,工作区可以自动的进行全局管理。

PGA_AGGREGATE_TARGTET设置实例的PGA目标重量,可以动态的修改。当设置了此参数,所有的工作区即变为自动修改。


你可能感兴趣的:(oracle体系结构-PGA)