当前位置:首页 > 内存 > 正文

内存结构包括两个部分sga和pga

  • 内存
  • 2024-09-03 03:45:49
  • 767

一、SGA是什么?是一组共享内存结构,其中包含Oracle实例的数据和控制信息。主要是用来存储数据库信息的内存区域。该信息由数据库进程共享(PGA不能共享)。它包含Oracle服务器的数据和控制信息。它分配在Oracle服务器所在计算机的实际内存中。如果实际内存不够,则写入虚拟内存。
SGA的几个非常重要的特性:
1、SGA的组成——数据和控制信息,我们下面会详细介绍;
2、SGA是共享的,即当有是否有多个用户同时登录到该实例,并且SGA中的信息可以同时被他们访问(涉及到互斥问题时,是通过latch和enquence来控制的);
3、一个SGA只服务于一个实例,也就是说,当一台机器上运行多个实例时,每个实例都有自己的SGA。虽然SGA来自OS的共享内存区域,但是实例之间不能访问彼此的SGA区域。
主要包括:
1.数据库缓存(thedatabasebuffercache),
2.重放日志缓存(theredologbuffer)
3.共享池(thesharedpool)
4.数据字典缓存(thedatadictionarycache)等方面的信息。
1、数据高速缓冲区(DataBufferCache)
Oracle系统最近使用的数据块(即用户的高速缓冲区)存储在数据高速缓冲区中。当数据写入数据库时​​,它以数据块为单位进行读写。当数据缓存填满时,系统会自动删除一些不经常访问的数据。如果用户要检查的数据不在数据缓存中,Oracle会自动从磁盘中读取。数据高速缓冲区包括三类区域:1)脏区(DirtyBuffers):包含已更改且需要写回数据文件的数据块。
 2)空闲区(FreeBuffers):不包含任何数据、可以重写的区域。Oracle可以从数据文件中读取该区域的数据块。
3)保留区域(PinnedBuffers):该区域包含正在处理或明确保留以供将来使用的区域。
gBufferCache缓存所有对数据块的修改。
主要用来恢复的每条修改记录称为重做条目。可以使用重做条目中的信息重做修改。
​Pool用于缓存最近执行的SQL语句和最近使用的数据定义。
主要由两个内存结构组成:Librarycache和Datadictionarycache
修改共享池的大小:ALTERSYSTEMSETSHARED_POOL_SIZE=64M;
LibrayCache缓存与最近执行的SQL和PL/SQL相关的信息。实现常用语句的共享,并使用LRU算法进行管理
。它由以下两个结构组成:SharedSQLarea、SharedPL/SQLarea、DataDictionaryCache,Datadictionarycache缓存最近使用的数据库定义。它包括有关数据库文件、表、索引、列、用户、权限和其他数据库对象的信息。在语法分析阶段,ServerProcess访问数据字典中的信息来解析对象名称并验证访问操作。数据字典信息缓存在内存中,有助于缩短响应时间。
4.数据字典缓存(thedatadictionarycache)


二、【赵渝强老师】Oracle数据库的内存结构

Oracle数据库内存架构是一个关键的知识点,直观地了解其内存结构有助于提高数据库性能。首先我们通过一个示意图来概述一下:


数据库实例的主内存分为两个主要部分:整体系统区(SGA)和整体程序区。(美国职业高尔夫球协会)。SGA是数据库的中央存储区域。它包含几个关键组件:


Cache:这是SGA中最关键的部分。它存储最近访问的数据块以进行改进。数据读取速度。通过缓存,Oracle减少了频繁的磁盘访问,从而提高了整体性能。


Pool:该区域存储数据库操作所需的程序代码、数据结构以及SQL语句解析结果,支持多个用户同时操作。


ool:存储大对象,例如BLOB和CLOB数据,以及一些临时表和游标。


gBuffer:用于记录事务更改,保证数据持久性和一致性。