加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle12C SGA PGA UGA

发布时间:2020-12-25 21:09:07 所属栏目:站长百科 来源:网络整理
导读:SGA和PGA简介 1 sga组成: 2b4p1s(记忆) database buffer cache:包括 default pool,keep pool,recycle pool; redo log buffer share pool:包括 library cache,dictionary cache large pool java pool streams pool fixed sga 这部分区域的大小只有几MB 2.pga
会话内存的性质 私有的 共享的 persistent 区域的位置 PGA SGA DML/DDL 语句的run-time区域的位置 PGA SGA

表 14-1 专用和共享服务器之间的内存分配差异

See Also:

?

    • 《Oracle Database Administrator’s Guide》了解如何将数据库配置为共享服务器

?

UGA 概述

UGA 是为会话变量分配的会话内存, 如登录信息和数据库会话所需的其他信息。 实际上,UGA 存储了会话状态。

图 1 描述了 UGA

Oracle12C SGA PGA UGA

图 1:用户全局区 (UGA)

如果某个会话将 PL/SQL 包加载到内存, 则在 UGA 中包含包状态,即是所有包变量在某个特定的时刻所存储的值集。当包的子程序更改变量的值时,包状态也将更改。默认情况下,包变量在会话的存活期间是唯一且持久的。

OLAP 页面缓冲池也存储在 UGA 中。该池管理相当于数据块的 OLAP 数据页。页缓冲池在启动一个 OLAP 会话时分配,并在该会话结束时释放。每当用户查询一个多维对象(如立方体)时,就会自动打开一个 OLAP 会话。

该 UGA 必须在数据库会话的整个存活期间是可用的。 由于这个原因, 当使用共享服务器的连接时,UGA 不能存储在 PGA 中,因为 PGA 是特定于单个进程的。因此,当使用共享服务器的连接时,UGA 被存储在 SGA 中,以使任何共享服务器进程都能访问它。在使用专用服务器的连接时, UGA 存储在 PGA 中。

?

pga和uga比较

uga:user global area ,是会话含义的内存区 为了保证数据可以被会话访问到,所以mts模式属于sga中的大池,专有模式属于pga,属于用户的内存区。
? ? uga保存当前会话相关的信息,比如会话登录信息、pl/sql包的参数信息,绑定变量的值。

pga:program global area,是操作系统含义上的内存区,
? ? 可以理解为操作系统在一个进程启动时,为他分配的内存空间
? ? 查询使用 show pga;

?

sga和pga比较

sga:共享数据块,所有进程可以访问,数据并发访问? ? 涉及lock,latch,锁定和队列? ? 是数据库最主要优化区域,一些重要的指标:data buffer hit,library hit(hard/soft parse),hot blockspga:为专有进程服务,进程间无法数据共享,数据独占? ? 无需锁定机制? ? 性能优化只需要考虑它的大小。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

如下示例显示了 employees 表和 departments 表相联接的查询计划。

SQL> SELECT * 
  2  FROM   employees e JOIN departments d 
  3  ON     e.department_id=d.department_id 
  4  ORDER BY last_name;
--------------------------------------------------------------------------------
| Id| Operation           | Name        | Rows  | Bytes | Cost (%CPU)| Time    |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT    |             |   106 |  9328 |    7  (29)| 00:00:01 |
| 1 |  SORT ORDER BY      |             |   106 |  9328 |    7  (29)| 00:00:01 |
|*2 |   HASH JOIN         |             |   106 |  9328 |    6  (17)| 00:00:01 |
| 3 |    TABLE ACCESS FULL| DEPARTMENTS |    27 |   540 |    2   (0)| 00:00:01 |
| 4 |    TABLE ACCESS FULL| EMPLOYEES   |   107 |  7276 |    3   (0)| 00:00:01 |
--------------------------------------------------------------------------------

在示例 1 中,run-time 区域跟踪全表扫描的进度。此会话在哈希区中执行一个哈希联接,以匹配两个表中的行。而 ORDER BY 排序操作在排序区中进行。

如果要由该运算符处理的数据量太大,不能在SQL Work 区中完成, 则 Oracle 数据库会将输入数据分成更小的片断。这样一来,数据库先在内存中处理一些数据片断,而将其余数据写入到临时磁盘存储,以待后续处理。

当启用了自动 PGA 内存管理时,数据库自动优化工作区大小。你也可以手动控制和优化工作区大小。更多的信息,请参阅“Memory Management”。

通常,更大的工作区可以显著提高操作性能,但这是以更多的内存消耗为代价的。理想的情况是,工作区域的大小足以容纳由其关联的SQL操作符分配的输入数据和辅助内存结构。否则,响应时间会增加,因为输入数据的一部分必须被缓存到磁盘上。在极端情况下,如果工作区的大小相比输入数据的大小显得过小,则数据库必须来回多次倒腾这些数据片断,极大地增大了响应时间。

See Also:

  • 《Oracle Database Administrator’s Guide》了解如何使用自动 PGA 管理
  • 《Oracle Database Performance Tuning Guide》 了解如何调整 PGA 内存

2 在专用和共享服务器模式中使用 PGA

PGA 内存分配取决于数据库是使用专用的还是共享的服务器连接。

表 1 显示了差异之处。

?

内存区 专用服务器 共享服务器
热点阅读