IT开放社区

PGA 内存结构

 序全局区域(Program Global Area),可以理解为进程全局区域。PGA 在服务器进程(Server Process)启动时创建,由服务器进程分配 PGA 所需的内存结构。PGA 是非共享的,所以 PGA 中的数据结构无需通过 Latch 来保护。在 oracle 中 PGA 的内存管理对于 DBA 来说与 SGA 同样重要。来扒起来吧伙伴们!

PGA实例.jpg

专用服务器模式下 PGA 实例


   PGA 的组件   

PGA内容.jpg

专用服务器模式下 PGA 组件

  • 私有 SQL 区(Private SQL Area)

Oracle 的应用程序或用户的应用程序在执行时,都可能显示或隐式的打开游标(Cursor)来处理任务,打开游标需要分配私有 SQL 区。用户进程管理私有 SQL 区,而分配和回收取决于应用程序,为了防止过度私有 SQL 区分配,Oracle 通过 OPEN_CURSORS 参数来限制每个用户进程能够同时打开的游标数量。用户进程的任务执行以及 Cursor 的使用是 PGA 内存的主要消耗,也是 DBA 进行数据库性能优化最应关注的内容。

游标.png

游标(Cursor)

永久区域(Persistent Area):

该区域包含绑定变量值。执行语句时,将绑定变量值提供给 SQL 语句 (游标被关闭时该区域被释放);

运行时区域(Run-Time Area):

该区域包含语句执行状态信息。如运行时区跟踪到目前为止在全表扫描中检索到的行数。Oracle 数据库创建运行时区作为执行请求的第一步。对于 DML 语句,当 SQL 语句执行完后,运行时区将被释放(当游标执行结束后被释放)。

私有 SQL 区在不同服务器模式下的分布:

内存区域专用服务器模式共享服务器模式
永久区PGA
SGA
运行时区PGAPGA
  • SQL 工作区(SQL Work Area)

该区域在内存密集型请求下分配,如下:

排序区(Sort Area)

排序操作符在排序区对行进行排序操作;

哈希区(Hash Area)

哈希连接运算符使用哈希区从其左侧输入构建哈希表;

位图合并区(Bitmap Merge Area)

位图合并使用位图合并区来合并从多个位图索引的扫描中检索到的数据。

  • 会话内存(Session Memory)

用于存放会话登录信息,共享服务器模式下,该内存区是共享的。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

网站分类
最新文章
    随机文章
      站点信息
      • 文章总数:114
      • 页面总数:2
      • 分类总数:3
      • 标签总数:1
      • 评论总数:0
      • 浏览总数:40282
      左邻右舍

      BlogPowerBy Z-BlogPHP 1.5 Zero ;Theme By 爱墙纸

      IT开放社区:京ICP备13044647号.初创于Oracle DBA实战班.邮箱:admin@itkaifang.com

      分享:

      支付宝

      微信