一、
System Global Area
Oracle 19c SGA
系统全局区域
(SGA)
是包含数据和控制信息的内存区域
Oracle
数据库实例。所有服务端和后台进程共享
SGA
。启动数据库实例时,会显示为
SGA
分配的内存量。
SGA
包括以下数据结构
:
Shared pool:
该组件缓存各种可以在用户之间共享的结构
;
例如,共享池存储已解析的存储
SQL
、
PL/SQL
代码、系统参数、数据字典信息。共享池几乎涉及到数据库中发生的所有操作。例如,如果用户执行
SQL
语句,
Oracle
数据库将访问共享池。
Flashback buffer:
该组件是
SGA
中的一个可选组件。当
Flashback
数据库被启用时,后台进程
Recovery Writer process (RVWR)
会启动。
RVWR
会周期性地将修改后的数据块从
buffer cache
拷贝到
flashback buffer
中,然后将
flashback
数据库中的数据按顺序写入到
flashback
数据库日志中,并循环重用。
Database buffer cache:
该组件是存储从数据文件中读取的数据块副本的内存区域。缓冲区是一个主内存地址,缓冲区管理器在其中临时缓存当前或最近使用的数据块。所有并发连接到数据库实例的用户共享对缓冲区缓存的访问。
Database Smart Flash cache:
数据库缓冲区缓存的可选内存扩展是否适用于
Solaris
上运行的数据库
甲骨文
Linux
。它为数据库块提供了一个二级缓存。对于读密集型在线事务处理
(OLTP)
工作负载和数据仓库
(DW)
环境中的临时查询和批量数据修改,它可以提高响应时间和总体吞吐量。数据库智能闪光高速缓存驻留在一个或多个闪存盘设备上,这些设备是使用闪存的固态存储设备。数据库智能闪存缓存是一种通常比额外的主存更经济的技术。
Redo log buffer:
该组件是
SGA
中的一个循环缓冲区,保存有关对数据库所做更改的信息。该信息存储在重做条目中。重做条目包含重构所需的信息
通过数据操作语言
(DML)
、数据定义语言
(DDL)
或内部操作对数据库进行的更改
(
或重做
)
。如果需要,重做条目用于数据库恢复。
Large pool:
该组件是一个可选的内存区域,用于比共享池更大的内存分配。大池可以为共享服务器的用户全局区域
(UGA)
和
Oracle XA
接口
(
用于事务与多个数据库交互
)
、语句并行执行时使用的消息缓冲区、用于恢复的缓冲区提供大量内存分配
管理器
(RMAN) I/O
奴隶和延迟插入。
In-Memory Area:
该组件是一个可选组件,它允许对象
(
表、分区和其他类型
)
以一种称为
columnar
格式的新格式存储在内存中。这种格式使扫描、连接和聚合的执行速度比传统的磁盘上格式快得多,从而为
OLTP
和
DW
环境提供了快速的报告和
DML
性能。这个特性对于分析应用程序特别有用,因为分析应用程序操作几行返回许多行,而
OLTP
操作几行返回许多列。
Memoptimize Pool:
该组件是一个可选组件,为基于键的查询提供高性能和可伸缩性。
Memoptimize Pool
包含两部分,
Memoptimize buffer area
和
hash index
。快速查找使用
memoptimization
池中的哈希索引结构,提供对给定表块的快速访问
(memoptimization
为读启用
)
,永久固定在缓冲区缓存中,以避免磁盘
I / O
。
memoptimization
池中的缓冲区完全独立于数据库缓冲区缓存。散列索引是在配置
Memoptimized
行存储时由数据库创建的。
Shared I/O pool (SecureFiles):
该组件用于安全文件大对象
(lob)
上的大型
I/O
操作。
lob
是一组设计用来保存大量数据的数据类型。
SecureFile
是
LOB
存储参数,支持重复数据删除、加密和压缩。
Streams pool:
该组件用于
Oracle Streams
、
Data Pump
和
GoldenGate
集成捕获和应用流程。的
Streams pool
存储缓冲的队列消息,并为
Oracle Streams
捕获进程和应用进程提供内存。除非您特别配置它,否则流池的大小从
0
开始。当使用
Oracle Streams
时,池的大小会根据需要动态增长。
Java pool:
该组件用于
Java
虚拟机
(JVM)
中所有特定于会话的
Java
代码和数据。
Java
池内存的使用方式不同,这取决于
Oracle
数据库运行的模式。
Fixed SGA:
该组件是一个内部管理区域,包含关于数据库和数据库实例的状态的一般信息,以及进程之间通信的信息。
二、
Program Global Area
Oracle 19c PGA
PGA (Program Global Area)
是一个非共享内存区域,它包含服务器和后台进程专用的数据和控制信息。
Oracle
数据库创建服务器进程来代表客户端程序处理到数据库的连接。在专用服务器环境中,为每个启动的服务器和后台进程创建一个
PGA
。每个
PGA
由堆栈空间、哈希区、位图合并区和用户全局区
(UGA)
组成。当使用
PGA
的关联服务器或后台进程终止时,
PGA
将被释放。
在共享服务器环境中,多个客户端用户共享服务器进程。
UGA
被移到大池中,只给
PGA
留下堆栈空间、散列区域和位图合并区域。
在专用服务器会话中,
PGA
由以下组件组成
:
SQL
工作区域
:
排序区域由对数据进行排序的函数使用,例如
Order BY
和
GROUP BY
。
会话内存
:
这个用户会话数据存储区域分配给会话变量,例如登录信息和数据库会话所需的其他信息。
OLAP
池管理
OLAP
数据页,它相当于数据块。
私有
SQL
区域
:
该区域保存有关已解析
SQL
语句的信息和其他用于处理的特定于会话的信息。当服务器进程执行
SQL
或
PL/SQL
代码时,该进程使用私有
SQL
区域存储绑定变量值、查询执行状态信息和查询执行工作区。同一个或不同会话中的多个私有
SQL
区域可以指向
SGA
中的单个执行计划。持久区域包含绑定变量值。运行时区域包含查询执行状态信息。
堆栈空间
:
堆栈空间是分配给保存会话变量和数组的内存。
哈希区
:
用于对表进行哈希连接。
位图合并区域
:
该区域用于合并多个位图索引扫描得到的数据。
-the end-