当用户进程连接到数据库并创建一个对应的会话时,Oracle服务进程会为这个用户专门设置一个PGA区,用来存储这个用户会话的相关内容。当

这个用户会话终止时,数据库系统会自动释放这个PAG区所占用的内存。这个PGA区对于数据库的性能有比较大的影响,特别是对于排序操作的

性能。所以,在必要的时候合理管理PGA区,能够在很大程度上提高数据库的性能。

一、PGA与SGA的区别。

  PGA(程序缓存区)与SGA(系统全局区)类似,都是Oracle数据库系统为会话在服务器内存中分配的区域。不过两者的作用不同,共享程度也

不同。SGA系统全局区顾名思义,是对系统内的所有进程都是共享的。当多个用户同时连接到一个例程时,所有的用户进程、服务进程都可以共

享使用这个SGA区。为此这个SGA的主要用途就是为不同用户之间的进程与服务进程提供一个交流的平台。除了这个作用,另外有一个重要的作

用就是各种数据库的操作主要就是在这个SGA区内完成。

  而PGA程序缓冲区则主要是为了某个用户进程所服务的。这个内存区不是共享的,只有这个用户的服务进程本身才能够访问它自己的PGA区

。做个形象的比喻,SGA就好像是操作系统上的一个共享文件夹,不同用户可以以此为平台进行数据方面的交流。而PGA就好像是操作系统上的

一个私有文件夹,只有这个文件夹的所有者才能够进行访问,其他用户都不能够访问。虽然程序缓存区不像其他用户的进程开放,但是这个内

存区仍然肩负着一些重要的使命,如数据排序、权限控制等等都离不开这个内存区。

二、 为排序设置合理的排序区大小(SORT AREA)。

  当用户需要对某些数据进行排序时,数据库是如何处理的呢?首先,数据库系统会将需要排序的数据保存到PGA程序缓存区中的一个排序区

内。然后再在这个排序区内对这些数据进行排序。如需要排序的数据有2M,那么排序区内必须至少要有2M的空间来容纳这些数据。然后排序过

程中又需要有2M的空间来保存排序后的数据。由于系统从内存中读取数据比从硬盘中读取数据的速度要快几千倍,为此如果这个数据排序与读

取的操作都能够在内存中完成,无疑可以在很大程度上提高数据库排序与访问的性能。如果这个排序的操作都能够在内存中完成,显然这是很

理想的。但是如果PGA区中的排序区容量不够,不能够容纳排序后的数据,那会如何呢?此时,系统会从硬盘中获取一个空间,用来保存这需要

排序的数据。此时排序的效率就会降低许多。为此在数据库管理中,如果发现用户的很多操作都需要用到排序,那么用户会设置比较大的排序

区,可以提高用户访问数据的效率。

  在Oracle数据库中,这个排序区主要用来存放排序操作产生的临时数据。一般来说,这个排序区的大小占据这PGA程序缓存取的大部分空间

,这是影响PGA区大小的主要因素。在小型应用中,数据库管理员可以直接采用其默认的值。但是在一些大型的应用中,或者需要进行大量记录

排序操作的数据库系统中,管理员可能需要手工调整这个排序区的大小,以提高排序的性能。如果系统管理员需要调整这个排序区大小的话,

需要通过初始化参数SORT_AREA_SIZE来实现。为了提高数据访问与排序的性能,数据库系统利用内存比硬盘要快几千倍的实施,会将准备排序

的数据临时存放到这个排序区,并在排序区内完成数据的排序。管理员需要牢记这个原则,并在适当的情况下调整排序区的大小,以提高数据

访问与数据排序的性能。

三、 会话区保存着用户的权限等重要信息(USER SESSON DATA)。

  在程序缓存区内还包含着一个会话区。虽然绝大部分情况下,管理员不要维护这个会话区,可以让数据库系统进行维护。但是,管理员还

是需要了解一下这个会话区的作用。因为这个会话区直接关系着数据库系统中数据的安全性。数据库系统不仅是存放数据的一个很好的载体,

而且在还提供了一个统一管理数据的平台,可以根据实际需要,为不同的用户设置不同的访问权限。简单的说,在数据库中可以控制用户可以

访问哪些数据。从而提高数据的安全性。

  当用户进程与数据库建立会话时,系统会将这个用户的相关权限查询出来,然后保存在这个会话区内。如此的话,用户进程在访问数据时

,系统就会核对会话区内的用户权限信息,看看其是否具有相关的访问权限。由于系统将这个用户的权限信息存放在内存上,所以其核对用户

权限的速度非常的快。因为系统不用再去硬盘中读取数据,直接从内存中读取。而从内存读取数据的效率要比硬盘上快几千倍。

  通常情况下,这个会话区内保存了会话所具有的权限、角色、性能统计等信息。这个会话区一般都是由数据库进行自我维护的,系统管理

员不用干预。

四、 堆栈区保存变量信息(STACK SPACE)。

  有时候为了提高SQL语句的重用性,会在语句中使用绑定变量。简单的说,就是SQL语句可以接受用户传入的变量。从而用户只需要输入不

同的变量值,就可以满足不同的查询需求。如现在用户需要查询所有员工的信息。然后其又要查询所有工龄在3年以上的员工等等。此时其实他

们采用的是同一个SQL语句,只是传递给系统的变量不同而已。这可以在很大程度上降低数据库开发的工作量。这个变量在Oracle数据库系统中

就叫做绑定变量。利用绑定变量可以加强与用户的互动性。另外在这个堆栈区内还保存着会话变量、SQL语句运行时的内存结构等重要的信息。

  通常情况下,这个堆栈区跟上面讲到的会话区一样,都可以让数据库系统进行自我维护,而管理员不用参与到其中。这些分区的大小,也

是系统根据实际情况来进行自动分配的。当这个用户会话结束时,系统会自动释放这些区所占用的空间。

五、 游标区 (CURSOR STATE)。

  无论是SQLServer数据库还是Oracle数据库中,有时候都需要用到游标技术。当运行使用游标的语句时,Oracle数据库系统会在程序缓存区

中间为其分配一块区域。这块区域就叫做游标区。通常情况下,游标用来完成一些比较特殊的功能。而且一般来说,采用游标的语句要比其他

语句的执行效率低一点。为此管理员在使用游标的时候,还是需要慎重。

  游标区是一个动态的区域。当用户执行游标语句时,系统就会在这个游标区内创建一个区域。当关闭游标时,这个区域就会被释放。这创

建与释放,需要占用一定的系统资源,花费一定的时间。为此在使用游标时,如果频繁的打开和关闭游标,就会降低语句的执行性能。所以笔

者建议,在写语句时,如果真的有必要使用游标技术时,则要注意游标不要频繁的打开和关闭。

  另外在Oracle数据库中,还可以通过限制游标的数量来提高数据库的性能。如在数据库系统中有一个初始化参数OPEN_CURSORS。管理员可

以根据实际的需要,来设置这个参数,控制用户能够同时打开游标的数目。不过需要注意的是,在确实需要才有游标的情况下,如果硬件资源

能够支持的话,那么就需要放宽这个限制。这可以避免用户进程频繁的打开和关闭游标。因为频繁的打开和关闭游标这对游标的操作是不利的

,会影响数据库的性能。

  从以上的分析中可以看出,程序全局区(PGA)主要包含排序区、会话区、堆栈区和游标区四个部分的内容,他们各司其职,完成用户进程

与数据库之间的会话。通常情况下,系统管理员主要关注的是排序区,在必要时需要手工调整这个排序区的大小。另外需要主要的是,游标区

是一个动态的区域,在游标打开时创建,关闭时释放。故在数据库开发时,不要频繁的打开和关闭游标可以提高游标操作的效率,改善数据库

的性能。其他分区的内容管理员只需要了解其用途,日常的维护交给数据库系统来完成即可。

PGA与SGA的区别,PGA的功能介绍相关推荐

  1. tl494c封装区别_TL494参数,功能介绍,TL494应用电路图,封装,管脚及TL494 PDF中文资料手册...

    TL494中文资料 功能介紹 中文 : 功能介紹 英文 : Voltage mode PWM control circuit. 品牌 : Contek 封装 : 引脚 : 功能介紹 中文 : 功能介紹 ...

  2. revit2016与2017区别_REVIT2017新功能介绍

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.Revit Fabrication ●将设计意图转化为预制构件: 可以将常规.设计意图 Revit 构件转化为 LOD 400 预制构件. ●布线填充 ...

  3. oracle中pga指什么,oracle中pga内存分配原则

    pga_aggregate_target 通常缩写为P_A_T,该参数同时限制全局pga分配和私有工作区内存分配 在oracle9i以及10gr1中,单个sql操作内存使用存在如下限制: 对于串行操作 ...

  4. oracle 增加SGA区和PGA区

    一.SGA和PGA初始值到底该设置成多大 1.下面是ORACLE官方的建议 ■For OLTP systems, the PGA memory typically accounts for a sma ...

  5. 如何估算PGA,SGA的大小,配置数据库服务器的内存

    ORACLE给的建议是: OLTP系统  PGA=(Total Memory)*80%*20%.DSS系统PGA=(Total Memory)*80%*50%. ORACLE建议一个数据库服务器,分8 ...

  6. oracle数据库uga中文全称,关于uga,pga和sga

    (1)如果是dedicate连接,uga是驻留在pga中的:如果是shared连接,uga是驻留在sga中的.pga是不会占用sga的空间.两者是单独分配. pga中包含sort_area_size和 ...

  7. Oracle因修改pga和sga超过memory限制size报错解决

    小记一例 (因修改pga和sga超过memory限制size) ORA-00838: Specified value of MEMORY_TARGET is too small, needs to b ...

  8. aptx与ldac音质区别_ldac_aptx和aptx hd功能介绍及区别介绍

    LDAC技术的功能介绍 LDAC是索尼研发的一种无线音频编码技术,它最早在2015年的CES消费电子设备大展上亮相.在当时,索尼表示比起标准的蓝牙编码.压缩系统,LDAC技术要高效三倍之多.这样一来, ...

  9. oracle数据库修改pga,18.1.2 修改PGA

    18.1.2  修改PGA PGA是指Process Global Area,即进程全局区.每位客户端用户连接到Oracle服务器,均会由服务器分配一定内存来保持连接,并将在该内存中实现用户私有操作. ...

最新文章

  1. 简单的5*5,五子棋小游戏
  2. myeclipse+git pull项目报错
  3. python--OS模块,文件系统
  4. Ubuntu禁用网卡步骤(重启依然生效)
  5. ubuntu20.04下开发海康威视网络摄像头sdk(二)云台基本控制(位姿控制)
  6. 命令行ssh连接服务器
  7. FPGA、MCU(stm3251)驱动VGA显示器_电阻分压法硬件设计_VGA电阻网络分压
  8. matlab imcrop 用法
  9. FRM 风险管理基础:复习提纲二
  10. [C语言]扫雷游戏(Mine Sweeper)
  11. 浙商银行入职计算机考试,浙商银行计算机笔试心得
  12. python模型保存:保存字典数据 checkpiont+ pth文件处理
  13. 分享一个Python画樱花树的代码
  14. HHUOJ_1351: 相对分子质量
  15. Python基础02-蟒蛇绘制
  16. 【刷题日记】网易——俄罗斯方块
  17. 面试官:RocketMQ是什么,它有什么特性与使用场景?
  18. DotNetTextBox V3.0 所见即所得编辑器控件Ver3.2.4 Free(免费版)
  19. 2年5个月13天,从外包到拿下阿里offer,不相信屌丝也能有今天
  20. 服务器2012系统 win7,Windows Server 2012 R2 预览版安装全程图解

热门文章

  1. 开店攻略: 婴幼儿用品店导购培训,培训什么?
  2. ACCESS学习日记(一.ACCESS 的对象)
  3. 高精度干涉仪->皮米分辨率位移干涉测量仪
  4. Hadoop 3.3.0 基础配置
  5. 使用python计算复利并使用图表表示
  6. flex布局——换行——多行换行
  7. 网站加速--服务器编写篇(转)
  8. FPGA极易入门教程----工具篇(2)Quartus II 的在线调试工具 In-System Sources and Probes(ISSP)
  9. BootStrap3中日期选择器的使用
  10. java多行字符串常量,【转】Error,java对常量池来说字符串xxx的UTF8表示过长的解决及其理解...