【体系结构】03.系统全局区(System Global Area)

系统全局区域 (SGA) 是包含一个Oracle数据库实例的数据和控制信息的存储区域。数据库所有的服务器进程和后台进程共享方式使用SGA。启动数据库实例时,将会显示SGA分配的内存量。SGA包含以下数据结构:

  • 共享池 (Shared pool):

在多个用户之间共享各种的缓存结构;

例如:共享池存储已解析的SQL,PL/SQL代码,系统参数和数据字典信息。共享池几乎涉及数据库中发生的每个操作。

例如:如果用户执行SQL语句,则Oracle数据库将访问共享池。

  • 闪回缓冲区 (Flashback buffer):

是SGA中的可选组件。启用闪回数据库后,将启动称为恢复写程序 (RVWR) 的后台进程。RVWR定期将修改后的块从缓冲区高速缓存复制到闪回缓冲区,然后将闪回数据库数据从闪回缓冲区写入闪回数据库日志,以循环方式重用。

  • 数据库高速缓冲区 (Database buffer cache):

是存储从数据文件读取的数据块副本的内存区域。缓冲区是主内存地址,缓冲区管理器在其中临时缓存当前或最近使用的数据块。并发连接到数据库实例的所有用户共享对数据库高速缓冲区的访问。

  • 重做日志缓冲区 (Redo log buffer):

是SGA中的循环缓冲区,用于保存有关对数据库所做的更改的信息。这些信息存储在重做条目中。重做条目包含重建(或重做)通过数据操作语言 (DML),数据定义语言 (DDL) 或内部操作对数据库所做的更改所必需的信息。如有必要,可将重做条目用于数据库恢复。

  • 数据库智能闪存缓存 (Database Smart Flash):

是Solaris或Oracle Linux上运行的数据库的数据库高速缓冲区的可选内存扩展。它为数据库中的数据块提供了2级缓存。针对读取密集型的在线事务处理 (OLTP) 工作负载,以及数据仓库 (DW) 中的即席查询 (Ad Hoc) 和批量数据修改工作,它可以提升这两种工作的响应时间和总体吞吐量。数据库智能闪存缓存驻留在一个或多个闪存设备上,这些设备是使用闪存的固态存储设备。数据库智能闪存缓存通常比其他主内存更经济,并且比磁盘驱动器快一个数量级。

  • 大池 (Large pool):

是一个可选的内存区域,用于大于共享池的内存分配。大池可以为如下内容提供更大的内存分配:共享服务器的用户全局区域 (UGA),Oracle XA接口(用于事务与多个数据库进行交互的地方),并行执行语句的消息缓冲区,用于Recovery Manager (RMAN) I/O 从属进程的缓冲区和延迟插入。

  • 内存中列式存储(In-Memory Area):

是一个可选组件,使对象(表,分区和其他类型)可以以称为列格式的新格式存储在内存中。与传统的磁盘格式相比,此格式使扫描,联接和聚合的执行速度快得多,从而为OLTP和DW环境提供了快速的报告和DML性能。相对于在返回包含多列的少量行上运行的OLTP,此功能对在运行返回包含少量列的多行的分析应用程序特别有用。

  • 内存优化池(Memoptimize Pool):

是一个可选组件,可为基于键的查询提供高性能和可伸缩性。Memoptimize池包含两部分,即memoptimize缓冲区和哈希索引。快速查询 (Fast Lookup) 使用memoptimize池中的哈希索引结构提供对给定表中块的快速访问 (启用MEMOPTIMIZE FOR READ选项) 以永久固定在缓冲区高速缓存中,以避免磁盘 I/O。Memoptimize池中的缓冲区与数据库缓冲区完全分开。哈希索引是在配置Memoptimized Rowstore 时创建的,并由Oracle数据库自动维护。

  • 共享I / O池(Shared I/O SecureFiles):

用于SecureFile大对象 (LOB) 上的大型 I/O 操作。LOB是一组数据类型,旨在保存大量数据。SecureFile是一个LOB存储参数,允许重复数据删除,加密和压缩。

  • 流池(Streams pool):

由Oracle Streams,Data Pump和GoldenGate集成的捕获和应用流程使用。Streams池存储缓冲的队列消息,并且为Oracle Streams捕获进程和应用进程提供内存。除非您进行特定配置,否则Streams池的大小从零开始。使用Oracle Streams时,池大小会根据需要动态增加。

  • Java池(Java pool):

用于Java虚拟机 (JVM) 中所有特定于会话的Java代码和数据。Java池内存的使用方式不同,具体取决于Oracle数据库的运行模式。

  • 固定的SGA(Fixed SGA):

是SGA的一个组成部分,一个内部整理区域,其大小因平台而异,并随发行版本的不同而变化。其中包含有关数据库和数据库实例的状态的一般信息以及进程之间进行通信的信息(固定SGA包含一组指向SGA其他组件的变量以及包含各种参数值的变量)。固定SGA的大小是我们无法控制的,通常很小。可以将此区域视为SGA的引导区,Oracle在内部使用此东西来查找SGA的其他部分。SGA的固定区域包含数千个原子变量,小型数据结构(例如锁存器和指向SGA其他区域的指针)。这些变量以及它们的数据类型,大小和内存地址都列在固定表 X$KSMFSV 中。

posted @ 2021-07-14 10:44  蟹Bro  阅读(386)  评论(0)    收藏  举报