欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OraclePGA

程序员文章站 2022-05-28 08:53:29
pga (programglobal area )程序全局区 pga是用户进程连接到并创建一个对应的会话时,由oracle为服务器进程分配的专门用于当前用户会话的内存区,每个ora...

pga (programglobal area )程序全局区

pga是用户进程连接到并创建一个对应的会话时,由oracle为服务器进程分配的专门用于当前用户会话的内存区,每个oracle服务器进程都包含有属于自己的pga,它只存储这个服务进程的相关信息。pga是私有的而非共享的,当它对应的用户进程死掉后可将服务器进程及其资源清除和释放。pga的构成:

l 排序区

用于存放排序操作产生的临时数据,排序区是影响pga区大小的主要因素。排序区的大小由初始化参数sort_area_size决定。而sort_area_retained_size参数是决定排序区操作结束后排序区保留的内存大小。从排序区释放的内存仍然属于服务器进程,并不返回给操作。

oracle利用内存比磁盘快的事实,将准备排序的数据先临时存储到排序区中,并在排序区中执行排序操作,然后将排序结果返回给用户。

排序原理:如果要排序的数据在排序区中放不下,则oracle就将数据分割成较小的块放在排序区中,然后对每一小块进行排序。排序产生的临时数据就先放到临时表空间的临时段中。当每一小块都排序完成之后,再将这些排序完成的小块合并在一起,产生最终结果。

l 会话区

存储会话所具有的权限、角色、性能统计信息。

l 游标状态区

运行sql语句或使用游标的语句时,oracle会在共享池中为该语句分配上下文区,游标实际是指向该上下文区的指针。在pga区中的游标状态区存储的是会话中当前使用的各个游标所处的状态。

l 堆栈区

存储的是会话中的绑定变量、会话变量、sql语句运行的内存结构等信息。

sga与pga对比表

sga

pga

分配时间

实例启动时

创建服务器进程时

释放时间

实例关闭时

服务器进程结束时

共享范围

被一个实例下的所有进程共享

单个进程专用,不能共享。