这篇文章是参考甲骨论老相老师的教学视频
http://v.youku.com/v_show/id_XMzk2NjAxODQ4.html?f=17419200
所做的学习笔记.

1. 什么是PGA, PGA的作用
         PGA的全程是Program global area,  是Oracle数据库系统的进程(包括前台进程server process 和 后台进程各种daemon)的专用的内存空间,  每1个进程都配1个PGA, 不过实在我们说的PGA通常指的是server process的PGA.

每1个server process的PGA都只能被这个server process访问.

2. PGA的构成
       
1) Private SQL area
          2) Session Memory           #hold a session's variables (logon information) and other information related to the session

3) SQL work Areas   #SQL 工作区

我们知道server process 是为连接数据库和用户客户端的session服务的, 而session的作用是什么呢? 当然是执行用户客户端提交的sql语句啊. 所以PGA结构中最重要的就是第3点 SQL 工作区, 就是为了执行sql语句服务的内存空间. 而我们主要研究的就是这个sql 工作区.

3. SQL work Areas的构成
            那么sql工作区又由那些部分构成呢?

实际上sql 工作区也可以分成几个部分,  其中主要的2部分就是:
             1) sort_area            #排序工作区
             2) hash_area           #哈希工作区

3.1      sort area  
                          顾名思义,  Sort area就是用于排序的空间.
                          假如,clent想从具有10000条数据的表T1中执行两条select语句:
                          1. select * from T1
                          2. select * from T1 order by c1,c2
                           
                          由于这10000条数据很可能存放在多个buffer中的, 所以实际上server process不能一次过获得所有10000条数据行的,只会一条一条地获得数据行.

对于第一条语句来讲, server process中每获得一条数据行就会把这条数据行发给用户, 当中只不过会经过PGA一下, PGA在这个过程中意义不大.

而对于第一条语句来讲, PGA必须先将10000条数据排好序才能发给用户, 所以会将10000条数据缓存在PGA里的Sort Aare 里面进行排序. 最后返回给用户.

所以sort area是PGA其中1个重要的部分.

而对于sort area 有两个重要的参数.
                          它们是 sort_area_size ,  sort_area_retained_size
                         
                          3.1.1  sort_area_size
                                    顾名思义, sort_area_size 就是当前的sort area的大小了. 假如上述要排序的10000条数据总共占5MB空间,那么sort_area_size 就会扩容到5MB.

3.1.2  sort_area_retained_size
                                   这个是sort_area的保留空间大小, 当上面的5MB 的10000条数据排好序后, server process就会把数据传给用户, 那么sort area就会释放空间, 那么释放到什么大小呢? 就是由这参数设定的啦.

3.2     Hash area 
                         首先,  Oralce数据库是1个关系数据库.
                         而什么是关系数据库呢?  就是表于表之间有关系啊.
                         绝大部分情况下, 我们不单只从1张表从取数据. 而是多表连接来去数据,  而多表连接中有一种连接是Hash连接, PGA的Hash are就是为表与表的hash连接服务的.

生产中, 大部分sql语句都会涉及排序和哈希连接, 所以这两个pga的部分十分重要...

转载于:https://www.cnblogs.com/nvd11/archive/2013/04/02/2996778.html

PGA内存作用和构成相关推荐

  1. oracle pga的作用,浅析Oracle中PGA和UGA两者间的区别

    初学Oracle时,你可能会对Oracle中PGA和UGA两者间的区别产生疑问,这里就PGA和UGA两者间的区别发表下个人意见,在这里拿出来和大家分享一下. The Process Memory除SG ...

  2. oracle pga的作用,ORACLE PGA 的调整

    PGA分两种管理模式: 手动PGA内存管理:用户指定排序区和散列区所使用的内存,每个连接使用相同的内存. 自动PGA内存管理:告诉Oracle可以使用的PGA的总量,由Oraclce根据系统负载决定具 ...

  3. Oracle 12c 新参数 PGA_AGGREGATE_LIMIT 限制 PGA 内存总大小

    Oracle 12c 新参数 PGA_AGGREGATE_LIMIT 限制 PGA 内存总大小 在自动 PGA 内存管理模式下, Oracle DB 尝试通过动态控制分配给工作区的 PGA 内存量遵从 ...

  4. oracle12c之 控制pdb中sga 与 pga 内存使用

    Memory Management using Resource Manager Oracle数据库资源管理器(资源管理器)现在可以在多租户容器数据库(CDB)中管理可插入数据库(PDBs)之间的内存 ...

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

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

  6. PGA内存空间的分配与回收

    一.UGA由哪几部分组成? 由上述图片可知, 一个会话里如果处理的是SQL语句,那么在shared pool中就有该SQL语句对应的Shared  Areas,该Shared  Areas的类型为Sh ...

  7. Oracle PGA内存管理 PGA Memory Management

    一.简介         Program Global Area(PGA)是一个和服务器进程关联的包含数据和控制信息的私有内存区域. 对于一个复杂的查询来说,需要在PAG中的SQL工作区(work a ...

  8. 内存虚拟化、内存复用、大页内存作用及详解

    内存虚拟化.内存复用.大页内存作用及详解 1. 内存虚拟化 2. 内存复用 2.1. 内存共享 2.2. 内存置换 2.3. 内存气泡 3. 大页内存 3.1. 大页内存原理 3.2. 大页内存配置 ...

  9. Oracle9i 自动管理PGA内存(zt)

    来自metalink:Oracle9i 自动管理PGA内存 前两天客户端运行速度特别的慢,最后更改了pga_aggregate_target后有了显著提高.这是metalink上关于该参数的一篇文章. ...

最新文章

  1. 出道50+年!乘风破浪的编程语言们,能二次翻红吗?
  2. 关于Session_End()运行机制的一些细节!
  3. 微软腾讯联手开发IM软件MQ QQ和MSN将于2009年停用
  4. SAP ABAP实用技巧介绍系列之 ABAP XSLT copy keyword
  5. HDU 5950——Recursive sequence
  6. python 改变词典顺序_按词典顺序排列的功率集
  7. 道指mt4代码_道恩转债上市首日遭大股东清仓式减持!
  8. [乐理知识] 第三章 拍子 节拍 节奏
  9. 痛苦如此持久,像蜗牛充满耐心地移动;快乐如此短暂,像兔子的尾巴掠过秋天的草原...
  10. linux结构体数组的定义数组,task_struct结构体中的run_list和array域
  11. 使用Microsoft数据迁移助手将Oracle数据库迁移到SQL Server –安装过程和简短概述
  12. Oracle Database 中 B*Tree 索引内部维护
  13. 如何对apk文件进行反编译
  14. 安全站点导航(感谢backlion整理)
  15. OPTIONS方法禁用
  16. 理解JPEG图像压缩算法,DCT变换
  17. 基于51单片机的智能蓝牙路灯街灯控制系统proteus仿真原理图PCB
  18. 讲解NRF24L01P无线收发模块(转载)
  19. created at mysql类型_MySQL created_at 日期时间字段在数据变更时,自动更新
  20. 小红年龄是小梅的5倍c语言,5.四年级奥数-年龄问题.doc

热门文章

  1. 【转】互联网公司都有哪些行业
  2. 在应用程序中加入.net脚本
  3. Linux命令-chmod、chown和chgrp
  4. 优秀程序员必须知道的32个算法,提高你的开发效率
  5. 遇见一款很受用的一个工具,推荐给各位程序员
  6. Retrofit2.0和Rxjava结合使用的简单记录
  7. Kubernetes的ConfigMap说明
  8. DICKSON隆重推荐的博客 --- SAP
  9. Emmet (ZenCoding) 缩写语法
  10. Android机器人电池插件源码