PGA结构

当客户端向服务器发送连接请求,服务器监听到客户端的请求,在专用服务器模式下,会在服务器端衍生一个server process来代理客户的请求,server process进而向实例发起连接,创建会话,而PGA就为server process所分配和使用。

PGA,这P,或译之程序,或翻为私有,角度不同而已,通常,我们称之”程序全局区“。它的创建时期:

1)server process启动或创建时分配,原因?无他,唯PGA和server process是”一根绳上的两个蚂蚱“。相濡以沫,患难一共。
  2)系统运行时,sort、hash join等操作也可能需要进一步的PGA分配

PGA为server process排他访问,故不存在latch争用。它包含了server process的数据和控制信息。通过C语言的运行时调用malloc()在本地分配,可动态扩缩。PGA是私有的而不是共享的,这个机制是有必要的,因为当进程死掉后可以把这些资源清除和释放掉.

oracle的应用程序或者用户的应用程序在执行时,都可能显示或者隐式地打开cursor,打开cursor就需要分配sql area,私有sql区在cursor打开时分配,关闭时释放,实际上,数据库的主要活动就是cursor的活动,简单说来,用户进程的任务执行和cursor的使用是PGA的主要消耗者。

用户体验最敏感的贡献就在于PGA。用户所发出的请求,执行时,是在pga中执行。若在pga中命中,则无须软解析或者硬解析,此时称为软软解析。pga中的游标指向buffer cache中的数据行。返回时,是一批批,而非一条条。

PGA可分固定PGA和可变PGA。可变PGA是一个内存堆,PGA的可变区实际上是我们最为关注的PGA部分。通过x$ksmpp可以查询可变PGA的分配和使用情况。它主要由:
  a)会话内存:用于存放会话的登录信息以及其他相关信息
  b)私有sql区
    b1)永久区域:含绑定变量,这部分内存只有在cursor关闭时才会被释放
    b2)sql work area:含sort区、hash区等,对于DML事务,sql执行完毕就释放该区域;对于select则是记录返回后或者查询取消时释放

c)游标和sql区域:这里的游标是一块内存,不是我们常指的“指针”

私有sql区的sql工作区太小会造成磁盘I/O,为均衡执行sql所需的内存与实际空间的分配,不得不将作业转换到临时表空间,因此,oracle将所得的sql工作区按大小分:
  a)optimal size:sql工作区完全可以满足执行sql所需的内存
  b)one-pass size:与临时表空间进行一次I/O
  c)multi-pass size:与临时表空间进行多次I/O
   当workload不大时,oracle倾向于为每个用户会话分配optimal size sql工作区.

UGA就是你的会话状态。你的会话总能访问这部分内存。UGA的位置取决你如何连接oracle。如果是专用服务器连接,UGA在PGA中创建;如果是共享服务器连接,UGA则在SGA中创建。所以,PGA包含进程内存,还可能包含UGA。

时间: 2024-08-24 21:54:19

PGA结构的相关文章

Oracle内存组件理论篇一

目标 1.SGA结构 2.PGA结构 1.SGA Shared pool 1).共享池是对SQL.PL/SQL程序进行语法分析.编译.执行的内存区域. 在执行SELECT * FROM emp语句时,会对sql语句进行语法分析->编译->生成执行计划->运行执行计划等,这些操作都在共享池中完成: 如果再次执行SELECT * FROM emp语句时,会在共享池中查找是否有相同的sql,如果存在则省去编译.生成执行计划操作步骤而是直接运行执行计划. 因此养成良好的编码习惯对于提高oracl

【转载】Oracle之内存结构(SGA、PGA)

[转自]http://blog.itpub.net/25264937/viewspace-694917/ 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. 二.SGA 包含实例的数据和控制信息,包含如下内存结构: 1)Database buffer cache:缓存了从磁盘上检索的数据块. 2)Redo log buffer:缓存了写到磁盘之前的重

[转载] Oracle之内存结构(SGA、PGA)

2011-05-10 14:57:53 分类: Linux 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. 二.SGA 包含实例的数据和控制信息,包含如下内存结构: 1)Database buffer cache:缓存了从磁盘上检索的数据块. 2)Redo log buffer:缓存了写到磁盘之前的重做信息. 3)Shared pool:缓存了各

Oracle之内存结构(SGA、PGA)

一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. 二.SGA 包含实例的数据和控制信息,包含如下内存结构: 1)Database buffer cache:缓存了从磁盘上检索的数据块. 2)Redo log buffer:缓存了写到磁盘之前的重做信息. 3)Shared pool:缓存了各用户间可共享的各种结构. 4)Large pool:一个可选

Oracle内存结构:SGA PGA UGA

内存结构是oracle数据库最重要的组成部分之一,在数据库中的操作或多或少都会依赖到内存,是影响数据库性能的重要因素Oracle数据库中包括3个基本的内存结构: 一. 系统全局区  (System Global Area, SGA): SGA是一组共享内存结构, 被所有的服务和后台进程所共享.当数据库实例启动时,系统全局区内存被自动分配.当数据库实例关闭时,SGA内存被回收. SGA是占用内存最大的一个区域,同时也是影响数据库性能的重要因素. 查询SGA区的情况: SQL> show SGA T

oracle内存结构

一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. 二.SGA 包含实例的数据和控制信息,包含如下内存结构: 1)Database buffer cache:缓存了从磁盘上检索的数据块. 2)Redo log buffer:缓存了写到磁盘之前的重做信息. 3)Shared pool:缓存了各用户间可共享的各种结构. 4)Large pool:一个可选

ORACLE PGA introduction

理解PGA PGA(program grlobal area or process global area)指服务进程的私有内存空间,包括服务进程全局变量,数据结构和控制信息,如服务进程SQL查询的游标,PGA包括以下结构: 私有SQL区域: 存储服务进程执行SQL所需要的私有数据和控制结构,包括固定区域和运行区域(runtimearea).固定区域数据在SQL游标关闭之前一直存在,运行区域在SQL执行时存在(如INSERT.DELETE及UPDATE执行完成后释放运行区域,SELECT语句只有

oracle--存储结构_段 区 块-笔记

这次的笔记将描述了Oracle数据库服务器中逻辑存储结构的段,区,块的本质和相互关系.1.介绍数据段.区段和段2.段概述3.区概述4.数据块概述 a.数据库由一个或多个表空间组成.    b.表空间由一个或多个数据文件组成.    c.段(table.index等)由一个或多个区组成.(可以理解“段”就是表)    d.区是文件中一个逻辑上连续分配的块(block),区是ORACLE中最小的分配单元,但区所在的数据文件并不连续的,甚至是跨磁盘分区的,一般一个段至少有一个区.    f.Oracl

板邓:数据库的结构

前面已经提到,数据库服务器包括实例和数据库两部分. 其中数据库是用来存储数据的,而实例是用来访问数据库中的数据的.实例包括一组内存结构和后台进程,而数据库的结构需要从逻辑结构和物理结构两个方面来理解.数据库的逻辑结构是指数据的逻辑组织形式,是Oracle内部用来管理数据的机制.数据库的物理结构是从用户角度感觉到的结构,是在操作系统中存储和管理数据的机制.从逻辑结构上来讲,一个数据库包含若干个表空间,不同类型的数据存储在不同的表空间中,如系统数据.用户数据.临时数据和回滚数据等分别存储在不同的表空