【体系结构】04.程序全局区(Program Global Area)

程序全局区域(PGA)是一个非共享的内存区域,其中包含专门由服务器和后台进程使用的数据和控制信息。Oracle数据库创建服务器进程,以代表客户端程序处理与数据库的连接。在专用服务器环境中,为每个服务器和启动的后台进程创建一个PGA。每个PGA都由堆栈空间,哈希区域,位图合并区域和用户全局区域(UGA)组成。当终止与之关联的服务器或后台进程时,将释放PGA。

  • 在共享服务器环境中,多个客户端用户共享服务器进程。UGA被移入大型池,而PGA仅具有堆栈空间,哈希区域和位图合并区域。
  • 在专用服务器会话中,PGA由以下组件组成:
  1.   SQL工作区 (SQL work areas):排序区供排序数据的函数使用,例如ORDER BY和GROUP BY。
  2.   会话内存 (Session memory):此用户会话数据存储区分配给会话变量,例如登录信息和数据库会话所需的其他信息。OLAP池管理OLAP数据页,这些数据页等效于数据块。
  3.   私有SQL区域 (Private SQL area):此区域保存有关已解析的SQL语句的信息以及其他特定于会话的信息以供处理。当服务器进程执行SQL或PL / SQL代码时,该进程使用私有SQL区域存储绑定变量值,查询执行状态信息和查询执行工作区。相同或不同会话中的多个私有SQL区域可以指向SGA中的单个执行计划。持久区域 (persistent area) 包含绑定变量值。运行时区域 (runtime area) 包含查询执行状态信息。游标是专用SQL区域中特定区域的名称或句柄。您可以将游标视为客户端上的指针,以及服务器端上的状态。因为游标与私有SQL区域紧密相关,所以有时可以互换使用这些术语。
  4.   堆栈空间 (Stack space):堆栈空间是分配用于保存会话变量和数组的内存。
  5.   散列区域 (hash area):此区域用于执行表的散列连接。
  6.   位图合并区域 (bitmap merge area):此区域用于合并从多个位图索引的扫描中检索到的数据。
posted @ 2021-07-14 10:56  蟹Bro  阅读(192)  评论(0)    收藏  举报