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。
PGA结构的更多相关文章
- Oracle内存组件理论篇一
		
目标 1.SGA结构 2.PGA结构 1.SGA Shared pool 1).共享池是对SQL.PL/SQL程序进行语法分析.编译.执行的内存区域. 在执行SELECT * FROM emp语句时, ...
 - Oracle之内存结构(SGA、PGA)
		
一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个服务进程.后台进程专有:每个进程都有一个PGA. ...
 - [转载] Oracle之内存结构(SGA、PGA)
		
2011-05-10 14:57:53 分类: Linux 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area ...
 - Oracle内存结构:SGA PGA UGA
		
内存结构是oracle数据库最重要的组成部分之一,在数据库中的操作或多或少都会依赖到内存,是影响数据库性能的重要因素Oracle数据库中包括3个基本的内存结构: 一. 系统全局区 (System G ...
 - 【转载】Oracle之内存结构(SGA、PGA)
		
[转自]http://blog.itpub.net/25264937/viewspace-694917/ 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: ...
 - ORACLE内存结构:PGA And UGA,ORACLE用户进程、服务器进程
		
执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的 ...
 - Oracle数据库体系结构及创建表结构
		
Oracle服务器主要由实例.数据库.程序全局区和前台进程组成,其中实例就是用来提供管理数据库的功能:数据库由数据库文件组成,用来存储系统数据:实例可以进一步划分为系统全局区(SGA)和后台进程(PM ...
 - [转]oracle学习入门系列之五内存结构、数据库结构、进程
		
原文地址:http://www.2cto.com/database/201505/399285.html 1 Oracle数据库结构 关于这个话题,网上一搜绝对一大把,更别提书籍上出现的了,还有很多大 ...
 - Oracle的内存结构
		
备注:本图片截图自“炼数成金” Oracle的体系结构分为内存结构.进程,磁盘文件. 内存结构分为SGA, PGA.SGA是系统全局区,是所有的用户共享区,PGA是某个用户的私有区. SGA分为sha ...
 
随机推荐
- 接口日志记录AOP实现-LogAspect
			
使用spring aop日志记录 所需jar包 pom.xml <!-- logger begin --> <dependency> <groupId>org.sl ...
 - v$Session详解
			
从Oracle10gR1开始,Oracle在V$SESSION中增加关于等待事件的字段,实际上也就是把原来V$SESSION_WAIT视图中的所有字段全部整合到了V$SESSION视图中,开始的时候我 ...
 - 落实制度靠流程<摘自平安50万人的执行力>
			
落实制度靠流程<摘自平安50万人的执行力> 讲在嘴上的制度是给人听的,写在纸上的制度是给人看的,落实在流程上的制度才是可靠的.制度的执行不能都依赖个人的自觉性. 很多企业都在强调和推行制 ...
 - Windows7 64bits下安装TensorFlow CPU版本(图文详解)
			
不多说,直接上干货! Installing TensorFlow on Windows的官网 https://www.tensorflow.org/install/install_windows 首先 ...
 - 用rman恢复备库;遇到备库起不来一个案例 ORA-01152:ORA-01110
			
数据从主库恢复到备库:打开备库发现出现异常 SQL> alter database open; alter database open * ERROR at line 1: ORA-10458: ...
 - Linux netstat 命令
			
1. netstat命令用于显示系统的网络信息,包括网络连接 .路由表 .接口状态2. 一般我们使用 netstat 来查看本机开启了哪些端口,查看有哪些客户端连接 常见用法如下: [root@loc ...
 - 管理开机启动:systemd
			
一.CentOS7 systemd 介绍 在 CentOS7 中,使用 systemd 来管理其他服务是否开机启动,systemctl 是 systemd 服务的命令行工具 [root@localho ...
 - 如何在单片机上使用printf函数(printf)(avr)(stm)(lpc)(单片机)(转)
			
摘要: 当我们在调试代码时,通常需要将程序中的某个变量打印至PC机上,来判断我们的程序是否按预期的运行,printf函数很好的做到了这一点,它能直接以字符的方式输出变量名和变量的值,printf ...
 - 多线程的学习与GDI的学习
			
今天又是一周的周五,感觉过的好快,我感觉不是期盼周末的到来,而是感觉现在已经习惯啦每天坐在这里敲代码,其实我是一个性格非常开朗的女生,现在不知道为什么感觉默默地坐在自己位置上面敲代码成为了我习以为常的 ...
 - 关于js中定时器的返回值问题
			
在js中,我们常常会用到定时器来处理各种各样的问题,当我们需要清除定时器的时候,我们常常会定义一个值来接受定时器的返回值,然后再把定义好的这个值写到清除定时器的括弧后面,如: var times = ...