《几种常用关系型数据库架构和实现原理.docx》由会员分享,可在线阅读,更多相关《几种常用关系型数据库架构和实现原理.docx(36页珍藏版)》请在优知文库上搜索。
1、Oracle()Oracle架构OracleServer包括数据库(Database)和实例(Instance)两大部分,两者相互独立。数据库由数据文件、控制文件和日志文件组成,实例由内存池和后台进程组成,示意图如下:procPasswordDatabase一台OracleServer可创建多个Database,不同的DatabaSe之间相互独立。每个Database有属于自己的全套相关文件,如:密码文件,参数文件,数据文件,控制文件和日志文件Database由一系列物理文件(如二维表文件)组成,用户不能亘接读取Database中的内容,必须通过OraCIeinstance才能读取,一个Ins
2、tance只能连接一个Database,但是一个DatabaSe可以较多个InStanCe连接。各功能组件说明如下:1、用户连接进程用户连接进程是连接用户和OradeInstance的桥梁.包括:用户进程、服务进程和PGA用户进程UserProcess当一个DatabaseUser请求连接到OraCIeServer时QraCIeServer创建的UserProcess.ServerProcess服务进程用于处理DatabaseUSer和OradeSerVer之间的连接.程序全局区PGAPGA:由ServerProcess分配,用于当前UserSession的内存区,不同的用户拥有不同的PGA.
3、PGA包含了SerVerPr。CeSS数据和控制信息的内存区域.包括钱空间、Sessioninfo,私有SQ1.区.2、SGA(SystemGlobalArea)SGA与Oraele性能息息相关,在Instance启动时被分配,关闭时技释放.主要包含如下几种数据结构:数据库缓冲区(Databasebuffercache)oracle执行SQ1.语句的区域.当进行数据更新或数据直询时,用户执行的SQ1.语句不会直接对磁盘上的数据文件进行更改操作,而是首先将数据文件复制到数据南缓冲区缓存,再更改或套询缓存中的副本.此外,被烦繁访问的数据块会存在于数据库缓冲区缓存中.日志缓冲区(RedologBuf
4、fer)用于短期存储redolog.共享池(SharedPool)用于缓存所有频繁执行的代码和频繁访问的对演定义.共享池内有下列三种数据结构:库缓冲(librarycache):存惆最近执行的代码数据字典缓存(datadictionarycache):存储最近使用的对象定义PuSQ1.缓冲区(P1./SQ1.buffer):用于存储过程、函数、打包的过程、打包的函数、对象类型定义和触发器.大型池(1.argeBuffer)用于共享的服务器进程.JAVA池(JavaBuffer):只有当应用程序需要在数据库中运行java存储程序时,才需要java池.3、后台进程后台进程主要用于数据库管理,是Or
5、adeInstance和OradeDatabase的联系纽带,分为核心进程和非核心进程.D核心进程:数据库写入进程(DBWn)SerVerpr。CeSS连接Orade后通过数据库写进程(DBWn)将数据缓冲区中的“脏缓冲区”的数据块写入到数据文件;检音点进程(CKPDCheckpoint(CKPT)检查点进程主要用于更新数据文件头,更新控制文件和触发DBWn数据库写进程.进程监视进程(PMON)当后台进程执行失败后负责清理数据库缓存和闲置资源,是OraCIe的自动维护机制.系统监视进程(SMON)用途如下:当数据库实例崩溃时,用于数据库实例的自动恢豆.清除作废的排序临时段,回收整理碎片,合并空
6、闲空间,释放临时段,维护闪回的时间点.里做日志文件和日志写入进程用于记录数据库的改变和记录数据库被改变之前的原始状态,当满足以下条件时.激活1.GWR:提交指令日志缓冲区超过1/3每三秒每次DBWn执行之前2)非核心进程归档进程(ARCn)是可选的后台进程,当数据库处于Archive1.og模式时,自动归档redolog,并保存数据库的所有修改记录.SGA(SystemGlobalArea)和后台进程组成Instance.4、存储结构存储结构可从物理结构和逻辑结构两方面理解。1) 物理结构Database物理结构:是Database在操作系统中的文件集合,即:碳盘上的物理文件,主要由数据文件、
7、控制文件、重做日志文件、归档日志文件、参数文件、口令文件组成。数据文件、再做日志文件、控制文件、跟踪文件、警告文件属于数据库文件DataFiles数据文件是数据的存储仓座,数据被使用时才被调入内存中的.Redo1.ogFiles至做日志文件包含对数据库所做的更改操作记录,在Orade发生故障时能够恢豆数据。ControlFiles控制文件包含维护和验证数据库完整性的必要的信息,例如,控制文件用于识别数据文件和里做日志文件,一个数据库至少需要一个控制文件.跟踪文件(TraceFiles)在instance中运行的每一个后台进程都有一个跟踪文件(tracefile)与之相连.Tracefile记载
8、后台进程所遇到的重大事件的信息。警告日志(Alert1.og)是一种特殊的跟踪文件,每个数据库都有一个跟踪文件,同步记载数据库的消息和错误.参数文件、口令文件、归档文件属于非数据库文件.ParameterFile实例参数文件,当启动oracle实例时,SGA结构会根据此参数文件的设置内存,后台进程会据此启动.PasswordFile用户通过提交username/password来建立会话,Oracle根据存储在数据字典的用户定义对用户名和口令进行验证.归档文件是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。2) 逻辑结构表空间用于存储数据库对象的逻辑空间,是信息存储的最大
9、逻担单位,是一系列数据文件的集合.一个数据库可以由多个表空间组成,每个表空间包括多个段.是对象在数据库中占用的空间.段是区的集合区:是为数据一次性预留的一个较大的存储空间,区是块的集合块:ORAC1.E最基本的存储单位,在建立数据库的时候指定,井被映射到磁盘块。3) 逻辑空间到物理空间的映射Oracle6(/6*i逻Z柏*rj1结A构理物对软(&、视图等)数据段本/段1NttKIKJ索“IXfuJ数切块数据块N物理文件物JT.站构物理块(二)OracleRDBMS的运行过程1. User访问OradeServer之前提交一个请求(包含了db_name.password.instance_nam
10、e、username等信息);2. OracleSerVer接收到请求并通过PasswordFile的验证后,分配SGA内存池,启动后台进程同时创建并启动实例;3. 启动实例之后,UserProcess与ServerProcess建立Connect;4. Serverprocess和OradeInStanCe建立Sesscion,随后接收用户请求,执行相关或作;(三)写SQ1.语句的执行过程1 .用户执行SQ1.语句,Serverprocess收到后,将SQ1.语句送到Instance,再将SQ1.语句载入数据库缓冲区.2 .ServerProcess通知OracleDatabase将与SQ1
11、.语句相关的数据块副本加载到缓冲区中。3 .在数据库缓存区执行SQ1.语句,修改数据文件副本,形成脏缓冲区”4 .CKPT检查到“脏缓冲区”,调用DBWn数据库写进程,5 .在DBWn运行之前,先运行了1.GWR,将数据文件的原始状态和数据库的改变记录到Redo1.ogFiles6 .运行DBWn1将“脏缓冲区的内容写入到数据文件7 .同时CKPT修改控制文件和数据文件头8 .SMON回收不必要的空闲资源9 .返回结果给用户(四)OraCIe的高可用性架构1) OracleRAC(RealApplicationClusters)RAC是Orade数据厮的一个群集解决方案包括计算层和存储层.如下
12、图所示:计算层储层节点1节点nRedologUndo叁数文件11归档日志共享存储XFS,s,0CFS2.RAW.ASM)D存储层一共享存储OracleRAC的核心是共享破盘子系统,集群中所有节点必须能够访问所有数据文件、页做日志文件、控制文件和参数文件,因此,这些文件必须存放在共享存储中.常用的共享存储方式有OCFS、OCFS2、RAW、NFS、ASM等.说明如下:OCFS(OracleClusterFileSystem)IQOCFS2都是文件系统,和NFS一样,提供集群环境共享存储的文件系统.RAW裸设备也是一种存储方式.把共享存储映射到RAWDevice,Oracle在存储数据时,选择RA
13、Wdevice存储即可.但相对于文件系统来说,RAW不直观,不便于管理,而且有数量的限制,现已被OCFS取代.ASM是一种数据库存储的方案,并不是cluster的方案,使用ASM时,还需使用OCFS/0CFS2或RAW.2) 计算层计箕层至少需要两台以上的服务器,在每台服务器上安装集群软件和OraCIe的RAC组件,从逻辑结构上看,每个节点都有一个独立的实例,这些实例访问同一个数据库.节点之间通过集群软件的通信层(Communication1.ayer)进行通信,利用高速缓存合并技术,实现集群中各节点缓存的高速同步,使得集群中的每个实例,都保留了一份相同的数据库cache,从而嵌大限度地低降低
14、磁盘I/O.因此,RAC有如下特点:每一个节点的实例都有自己的SGA;每一个节点的实例都有自己的后台进程每一个节点的实力都有自己的redologs每一个节点的实例都有自己的undo表空间所有节点都共享一份datafiles和controlfiles2、DataGuard在DataGUrad环境中,至少有两个数据库,一个主库(PrimaryDatabase)处于Open状态,另一个备席(StandbyDatabase)处于standby状态.备库又分物理库和逻箱库.物理库和主库完全一样,通过RED。应用来保持与主库的数据一致性,支持只读服务;逻辑库通过SQ1.应用,在备库端执行和主库同样的SQ1
15、.语句,以此来保持与主库的数据一致,因此文件的物理结构(甚至数据的逻娼结构)都可以与主库不一致.逻辑库支持读写服务.DataGuard适合多机房方案,实际部罟时,主库部署在主机第,备库部署在其他机房。二、MySQ1.(一)MySQ1.架构连接翳(Connectors)连接池(CnectionPool)存储引率(PluggableStorageEngines)F文件系统(NTFS,gM=S、SAX,NAS)文件4日志Redo、Indo,Data、IndexEtc.1、连接器(Connectors)MySQ1.向外提供的接口,如java,.netfphp等语言可以通过该组件来操作SQ1.语句,实现与SQ1.的交互.2、苣理服务组件和工具组件(ManagementService&Utilities)提供对MySQ1.的集成管理,如备份(BaCkUP),恢复(Rec。Very),安全管理(SeCUrity)等3、连接池组