Oracle之体系结构

2021/4/18 2:25:42

本文主要是介绍Oracle之体系结构,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、oracle内存由SGA+PGA所构成

2、oracle数据库体系结构
数据库的体系结构是指数据库的组成、工作过程与原理,以及数据在数据库中的组织与管理机制。

 

 3 工作原理

1)、在数据库服务器上启动Oracle实例;
2)、应用程序在客户端的用户进程中运行,启用Oracle网络服务驱动器与服务器建立连接;
3)、服务器运行Oracle网络服务驱动器,建立专用的服务器进程执行用户进程;
4)、客户端提交事务;
5)、服务器进程获取sql语句并检查共享池中是否有相似的sql语句,如果有,服务器进程再检查用户的访问权限;否则分配新的sql共享区分析并执行sql语句;
6)、服务器从实际的数据文件或SGA中取得所需数据;
7)、服务器进程在SGA中更新数据,进程DBWN在特定条件下将更新过的数据块写回磁盘,进程LGWR在重做日志文件中记录事务;
8)、如果事务成功,服务器进程发送消息到应用程序中。

 4、oracle实例
i、Oracle实例是内存结构和后台进程的集合
ii、启动Oracle实例的过程,即:分配内存、启动后台进程
iii、Oracle实例的内存包括SGA和PGA;
     当启动实例的时候分配SGA;
     当服务器进程建立时分配PGA;
     一般情况下,SGA:PGA=8:1分配内存。

Oracle实例的后台进程包括SMON、PMON、DBWR、LGWR、ARC、CKPT等。

5、SGA(System Global Area): 系统全局区
i0、数据库信息存储于SGA,由多个数据库进程共享。
i1、SGA包括:共享池、数据缓冲区、日志缓冲区、Large池、Java池、Stream池。
i2、共享池
1)、共享池是对SQL、PL/SQL程序进行语法分析、编译、执行的内存区域。
如在执行SELECT * FROM emp语句时,会对sql语句进行语法分析->编译->生成执行计划->运行执行计划等,这些操作都在共享池中完成;如果再次执行SELECT * FROM emp语句时,会在共享池中查找是否有相同的sql,如果存在则省去编译、生成执行计划操作步骤而是直接运行执行计划
2)、共享池由库缓存和数据字典缓存组成。
3)、共享池的大小直接影响数据库的性能。

i3、数据缓冲区

1)、用于存储从磁盘数据文件中读入的数据,所有用户共享。
2)、服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。
3)、数据缓冲区的大小对数据库的读取速度有直接的影响。
4)、硬盘上的数据文件中的数据,如何返回给用户的?
i、从硬盘取出来,直接返回给用户,使得获取数据的效率非常低。
ii、从硬盘取出来,放到数据缓冲区,从数据缓冲区中把数据返回给用户。下次读取同样的数据的话,直接从数据缓冲区中获取,不需要再从硬盘获取。

 i4、日志缓冲区
1)、日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。
2)、当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日志文件中。
3)、相对来说,日志缓冲区对数据库的性能影响较小。
eg、UPDATE emp SET empno=7935 WHERE empno=7934;首先在日记缓冲区中被记录,某个时候(三种情况;一、日志缓冲区中的记录达到1M 二、每隔3秒 三、日志缓冲区已经用了三分之一,满足其中任意一项就可以)把日志缓冲区中的这些记录写到在线日志中去。

i5、Large池
为了进行大的后台进程操作而分配的内存空间,主要指备份恢复、大型IO操作、并行查询等。

  
i6、Stream池
为了stream应用而分配的内存空间,高级复制技术一部分。

  
i7、JAVA池
为了java应用而分配的内存空间。



这篇关于Oracle之体系结构的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程