Oracle 实例内存结构

来源:互联网 发布:破解 经淘宝排查认定 编辑:程序博客网 时间:2024/05/28 11:50

Oracle 的内存结构包含以下两个内存区:SGA、PGA

Oracle 实例启动时分配系统全局区
当服务器进程启动时分配程序全局区
Oracle实例的SGA(System Global Area),又称为共享全局区,它用来存储数据库信息,并由多个数据库进程共享。当数据库实例启动时,SGA的内存被自动分配。SGA是数据库中占用服务器内存最大的一个区域,同时也是影响数据库性能的一个重要指标。
SGA按其作用不同,可分为共享池、数据缓冲区及日志缓冲区。

系统全局区(SGA)

OS中外存、内存、缓存的三级存储结构

外存:价格最便宜、存储量最大、速度最慢、存放永久数据
内存:价格贵、存储量小、速度快、存放临时数据
缓存:价格更贵、存储量更小、速度更快
内存是电脑内部临时存放数据的地方,供CPU直接读取,存放在其中的数据要靠电来维持,一旦断电就会丢失。因此,在操作电脑时,应及时地将需要保存的信息进行保存。
外存包括软盘、硬盘和光盘,存放在其中的数据靠磁来维持,因此可永久保存数据。
三者关系:
当我们有大量数据时,放外存。当对某些数据进行操作时,放内存进行。数据缓存/冲区是为了把外存中的数据放到内存中
共享池

共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域
共享池由库缓存和数据字典缓存组成。其中,库缓存含有最近执行的SQL、PL/SQL语句的分析码和执行计划;数据字典缓存含有从数据字典中得到的表、索引、列定义和权限等信息。
共享池的大小直接影响数据库的性能。如果共享池太小,则运行SQL、PL/SQL程序所用的时间就会越长,影响数据库的性能。
共享池包含两种结构:固定结构和可变结构。固定结构相对保持恒定大小,一般不会改变,而可变结构则根据用户和程序的需要增大或缩小。
数据缓冲区

用于存储从磁盘数据文件中读入的数据,所有用户共享。
数据被修改时,首先要从数据文件中取出、存储于数据缓冲区中。修改的数据、插入的数据被存储于数据缓冲区,修改完成后和其他条件满足时,数据被写入数据文件。
Oracle服务器进程在处理一个查询时,首先查找内存中是否存在所需的数据块。如果在数据缓冲区中没有找到需要的块,服务器进程则从数据文件中读取此块,并保存在缓冲区中。当后续的请求需要读取这些块时,可以在内存中找到,因此这些请求不需要从磁盘读取,提高了读取速度。
数据缓冲区的大小对数据库的读取速度有直接的影响。
日志缓冲区

日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。
当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。
数据更改可能来自INSERT、UPDATE、DELETE、CREATE、ALTER或DROP等操作。
相对来说,日志缓冲区对数据库的性能影响较小。
修改表中的数据:写日志
查询表中的数据:不写日志
程序全局区(PGA)

程序全局区(PGA)包含单个服务器进程所需的数据和控制信息
PGA是在用户进程连接到数据库并创建一个会话时自动分配的,保存每个与Oracle 数据库连接的用户进程所需的信息。它记录哪个用户与数据库进行连接等信息。
PGA为非共享区,只能单个进程使用,当一个用户会话结束,PGA释放
后台进程与实例之间:一对多关系
用户进程与服务器进程是一对一的

0 0
原创粉丝点击