1、几种常用关系型数据库的架构和实现原理 —、ORACLE3 (―)Oracle 架构3 1、用户连接进程4 2、SGA (System Global Area) 4 3、后台进程5 4、存储结构6 (二) Oracle RDBMS 的运行过程7 (三) 写SQL语句的执行过程7 (四) Oracle的高可用性架构8 1、Oracle RAC (Real Application Clusters) 8 2、Data Guard9二、MYSQL10 (-)MySQL 架构10 1、连接器 (Connectors) 10 2、管理服务组件和工具组件(Management S
2、ervice & Utilities)10 3、连接池组件(Connection Pool)10 4、SQL 接口组件(SQL Interface)11 5、查询分析器组 件(Parser)11 6、优化器组件(Optimizer) 11 7、缓存主件(Caches & Buffers) 11 8、MySQL存储引擎11 9、物理文件(File System) 11 (-)一个查询流程图11 (三)MYSQL的高可用架构12 1、主从复制模式12 2、MHA (Master High Availability) 13 3、MGR (MySQL Group Replica
3、tion) 14三、POSTGRESQL14 (—)PostgreSQL 的体系架构14 1、主进程Postgres (常驻进程) 15 2、Postgres (子进程),子进程16 3、后台进程(Background Process) 16 4、共享内存和本地内存17 (-)数据结构18 1、数据库相关概念:18 2、表空间相关概念:18 3、表相关概念:19 (三)后端进程的处理流程19二、MySQL 二、MySQL (-)MySQL 架构 连接器(Connectors) 1、连接器(Connectors) MySQL向外提供的接口,如java, . ne
4、t, php等语言可以通过该组件来操作SQL语句, 实现与SQL的交互。 2、管理服务组件和工具组件(Management Service & Utilities)提供对MySQL的集成管理,如备份(Backup),恢复(Recovery),平安管理(Security)等 3、连接池组件(Connection Pool)负责监听对客户端向MySQL Server端的各种请求,接收请求,转发请求到目标模块。 每个成功连接MySQL Server的客户请求都会被创立或分配一个线程,该线程负责客户端与MySQL Server端的通信,接收客户端发送的命令,传递服务端的结果信息等。 4、SQL
5、 接 口组件(SQL Interface)接收用户SQL命令,如DML, DDL和存储过程等,并将最终结果返回给用户。 5、查询分析器组件(Parser)首先分析SQL命令语法的合法性,并尝试将SQL命令分解成数据结构,假设分解失败, 那么提示SQL语句不合理。 6、优化器组件(Optimizer)对SQL命令按照标准流程进行优化分析。 7、缓存主件(Caches & Buffers) 缓存和缓冲组件8、MySQL存储引擎 MySQL属于关系型数据库,而关系型数据库的存储是以表的形式进行的,对于表的创 建,数据的存储,检索,更新等都是由MySQL存储引擎完成的。 因MySQL的开源
6、性,允许第三方基于MySQL骨架,开发适合自己业务需求的存储引擎。 因此,MySQL支持的存储引擎种类较多,可以分为官方存储引擎和第三方存储引擎。 当前,MySQL 的存储引擎有 MylSAM、InnoDB、NDB、Archive、Federated、Memory. Merge> Parter> Community> Custom等。其中,比拟常用的存储引擎包括InnoDB、 MyISAM 和 Momeryo9、物理文件(File System) 实际存储MySQL数据库文件和一些日志文件等的系统,如Linux, Unix, Windows等。 (二)一个查询流程图初始化 初始化
7、Connetors 连接管理 连接线程 用户 命令分发模块 曰志记录模块 表变史模块 复制模块 表维护模块 状态模块 访问控制模块 命令 块 查询优化器 表管理模块 存储引争接口 Pluggable Storage Engines File System (三)MySQL的高可用架构因MySQL的开源属性,其高可用架构非常灵活,目前常用的主要有以下几种: 1、主从复制模式这是MySQL自身提供的一种高可用解决方案,数据同步方法采用的是MySQL replication技术。为了到达更高的可用性,在实际的应用环境中,需要配合高可用 集群软件keepalive
8、d来实现自动failover,否那么,需要手工切换。 Web Server 2、MHA (Master High Availability) MIIA是相对成熟的高可用解决方案,该软件由两局部组成:MHA Manager (管理节点) 和MHA Node (数据节点)。搭建MHA时,要求一个集群必须最少有三台数据库服务 器,一主二从(即一台master, 一台备用 川aster,另外一台slave)。 MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,或部 署在一台slave节点上,MHA Node运行在每台MySQL服务器上。 运行时,MHA
9、 Manager会定时探测集群中的master节点,当master故障时,会自动 将最新数据的slave提升为新的master,然后将其他所有slave重新指向新的mastero 整个故障转移过程对应用程序完全透明。整个切换过程如下: o 从宕机崩溃的master保存二进制日志事件(binlog events); o识别含有最新更新的slave; o 应用差异的中继日志(relay log)到其他的slave; o 应用从master保存的二进制日志事件(binlog events); o 提升一个slave为新的master; o使其他的slave连接新的master进行复制;3
10、MGR (MySQL Group Replication) MGR是MySQL官方推荐的另一种高可用架构,复制组间的数据同步基于Paxos协议。 当客户端发起更新事务时,该事务先在本地执行,执行完成之后就要发起对事务的提 交操作。在还没有真正提交之前,需要将产生的复制写集广播出去,复制到其它成员。 如果冲突检测成功,组内决定该事务可以提交,其它成员可以应用,否那么就回滚。 Master 1 Master 2 Master 3 execute Consensus r certi^J [relay log j r\ apply j [binlog J [commit j
11、 commit { certify ] r. 「 relay log E_•_i apply LJ binlog —1 r1 commit .L J 组复制可以在两种模式下运行: ■单主模式下,组复制具有自动选主功能,每次只有一个Server成员接受更新, 其它成员只提供读服务。 ■多主模式下,所有的Server成员都可以同时接受更新,没有主从之分,成员 角色是完全对等的。 三、PostgreSQL(一)PostgreSQL的体系架构 PostgreSQL使用C/S模式提供服务。客户端和服务器可以在不同的主机上,通过TCP/IP进行网络连接,架构如下:
12、 共享内存 本地内存 数据缓冲区WAL缓冲区Clog缓冲区 临时缓 work_m manintance_ 冲区emwork me 文件存储 数据文件WAL文件 控制文件 1、主进程Postgres (常驻进程) 主进程是PostgreSQL启动时,第一个启动的进程Postgres。启动时,他会执行恢复、 初始化共享内存,启动后台进程。当有客户端发起链接请求时,postgres会生成子进 程,同时创立后端进程。 是整个数据库实例的总控进程,负责启动和关闭该数据库实例。 Background Process At initial startu
13、p, fork () 3f Send query request and result B»€kend Process Client Process Postmaster Process 2、Postgres(子进程),子进程 Postgres接受前端请求,对数据库进行检索,最后返回结果。如请求是对数据库进行更 新,会先记录日志(PostgreSQL称为WAL日志),以便宕机重启时的数据恢复。另外,日 志会定期归档保存,以便需要时进行数据恢复。 3、后台进程(Background Process) ■ Syslogger (系统日志)进程将错误信息写到log日志中。 ■
14、BgWriter (后台)进程周期性的将脏内存块写入文件。 ■ Checkpointer当检查点出现时,将脏内存块写到数据文件 ■ WalWrite (预写式日志)进程将WAL (Write Ahead Log预写式日志)缓存写入WAL文件。 ■ PgArch (归档)进程 在归档模式下时,复制WAL文件到特定的路径下。 WAL日志会被循环使用,PgArch在归档前会把WAL H志备份出来。通过PITY (Point in Time Recovery)技术,可以对数据库进行一次全量备份后,该技术将 备份时间点之后的WAL日志通过归档进行备份,使用数据库的全量备份再加上后面 产生的WA
15、L日志,即可把数据库向前推到全量备份后的任意一个时间点。 ■ AutoVacuum (自动清理)进程当自动vacuum被启用时,用来派生autovacuum工作进程。autovacuum进程的作 用是在需要时自动对膨胀表执行vacuum操作。 在PostgreSQL数据库中,对表进行DELETE操作后,旧的数据并不会立即被删除, 并且,在更新数据时,也并不会在旧的数据上做更新,而是新生成一行数据。旧的 数据只是被标识为删除状态,只有在没有并发的其他事务读到这些就数据时,它们 才会被清楚。这个清除工作就有AutoVacuum进程完成。 -PgStat (统计数据收集)进程用来收集数据库统计
16、信息。 4、共享内存和本地内存 共享内存 PostgreSQL启动后,会生成一块共享内存,用于做数据块的缓冲区,以便提高读写性 能。WAL日志缓冲区和Clog缓冲区也存在共享内存中,除此之外还有全局信息比方进 程、锁、全局统计等信息也保存在共享内存中。 数据缓冲区通过BgWrite进程,定期将数据写入数据文件。WAL缓冲区通过WALWrite 进程写入WAL文件,并通过PgArch定期进行归档,写入归档日志 ■本地内存非全局存储的数据都存在本地内存中,主要包括: o临时缓冲区:用于临时表。默认值为8MB o work_mem:用于排序、位图索引、哈希链接和合并链接操作。默认值为4M
17、B。。 o manintance_work_mem:用于vacuum和创立索引操作。默认值为64MB。 (二) 数据结构1、数据库相关概念: PostgreSQL由一系列数据库组成。一套PostgreSQL程序称之为一个数据库群集。 当initdb ()命令执行后,templateO , templatel ,和postgres数据库被创立。 template0和templatel数据库是创立用户数据库时使用的模版数据库,他们包含系 统元数据表。 initdb ()刚完成后,template。和templatel数据库中的表是一样的。但是templatel 数据库可以根据用户需要创立对象
18、 用户数据库是通过克隆templatel数据库来创立的;2、表空间相关概念: initdb ()后,创立 pg_default 和 pg_global 表空间。 建表时如果没有指定特定的表空间,表默认被存在pg.default表空间中。 用于管理整个数据库集群的表默认被存储在pg_global表空间中。 pg default表空间的物理位置为$PGDATAbase目录。 pg.global表空间的物理位置^/$PGDATAglobal目录。 一个表空间可以被多个数据库同时使用。此时,每一个数据库都会在表空间路径下创 建为一个新的子路径。 创立一个用户表空间会在$PGDATApg
19、tblspc目录下面创立一个软连接,连接到表空 间制定的目录位置。 3、表相关概念: 每个表有三个数据文件: 一个文件用于存储数据(文件名是表的OID);一个文件用于管理表的空闲空间(文件名是0ID_fsm) o 一个文件用于管理表的块是否可见(文件名是0ID_vm) o索引没有一vrn文件,只有OID和OID_fsm两个文件 (三)后端进程的处理流程接收前端发送过来的查询(SQL文) 构文解析。将SQL文(单纯的文字)转换成构文树parser tree。 构文树解析完以后,换为查询树。这时会访问数据库,检查表是否存在,如果存在的 话,那么把表名转换为OID。这个处理称为分析处
20、理(Analyze) o因PostgreSQL还通过查询语句的重写实现视图(view)和规那么(rule),所以需要时, 此阶段会对查询语句进行重写。 解析查询树后,可生成计划树。 按照执行计划里面的步骤可以完成查询要到达的目的。 执行结果返回给前端。 返回到步骤一重复执行。 四、国产关系型数据库国产关系型数据库较多,此处以GaussDBT为例 (―)GaussDB T 架构1、内存结构 内存结构分为4局部,如以下图: 四、国产关系型数据库19 (―)GAUSSDBT 架构19 1、内存结构19 2、存储结构.21 (二)GAUSSDB T 关键技术21 (三)GAU
21、SSDBT的高可用部署模式22 1、单机和主备部署模式22 2、分布式部署模式23 (四)典型的分布式部署架构23五、主流关系型数据库特点分析25 JDBC/CLI Agent Pools SGA Listener TCP LSNR Agent Log Buffer Data Buffer PC LSNR Agent Agent Agent Daemon Threads Agent CKPT) 「SMON、 fJOBS> fARCH SQL Cache Sort Area Dictionary Cache Session Pool Large Ar
22、ea LOGW LOGR Listener:包括TCP LSNR和IPC LSNR,用于侦听用户的连接请求Agent Pool:代理的连接池 SGA: o Log Buffer:全局日志缓冲区,缓存redo H志 o Data Buffer:全局数据页缓冲区,用于缓存表索引等数据 o SQL Cache :全局执行计划缓冲IX o Sort Area:全局排序/物化缓冲区 o Dictionary Cache:全局数据字典(元数据)缓冲区 o Large pool,大池,存放较大的SQL o Session Pool, 全局 Session 池,用于存
23、放 Session -后台进程 o L0GW:日志写线程,负责将log buffer中的日志写到磁盘。 o CKPT:负责将脏页(Dirty Page)刷到磁盘,保证WAL,并更新Control File。 o SM0N:负责监测系统的状态,比方检测死锁,修复异常的sessiono o JOBS:应用定制的后台任务调度。 o LOGR:日志复制,用于HA和GR。 o ARCH:用于日志文件归档。 2、存储结构数据以文件方式存储,主要有三种文件: DATA FILE,数据文件,用于存放各种数据,单库最多1024个数据文件,每个数据文 件最大8T(undo除外,undo最大32G
24、LOG FILE,日志文件,用于存放redo日志,可以重复使用,最少3组,每个redo日 志文件一般建议5-20G CONTROL FILE,控制文件,用于数据库名、数据文件位置等信息,在数据库启动到mount 阶段时会检查。 (二)GaussDB T关键技术Data Buffer Log Buffer Insert abc 内存 Pagel Mabcn Page2 “de” Insert de Checkpoint刷盘 ■❶Redo刷盘 磁盘 Redo Log 镜像页机制当进行事务提交时,必须先将Redo log刷盘。 脏页数据刷盘后,可用Redo日志可回收
25、 如果数据未刷盘前掉电,加电后需要重做Redo,保持数据的一致性。 脏页队列:脏页按时序组成链表,即脏页队列,Checkpoint按该队列顺序分组刷盘; Checkpoint任务调度:Checkpoint后台服务线程通过定时、脏页量、RedoLog满,三 个策略满足之一会触发刷盘操作;Redo任务调度:Redo后台服务线程通过定时、Redo buffer量、事务提交满足之一 时会触发Redo Log Buffer刷盘操作; 镜像页机制:刷盘时间相对较长,为防止I/O阻塞,Checkpoint通过一个镜像页面缓 存来完成刷盘。 采用MVCC机制提高事务并发能力。 (三)GaussDB
26、 T的高可用部署模式@质■ ,伽津801形式 / tmst町 m或苴靠曰!求皎成 @质■ ,伽津801形式 / tmst町 m或苴靠曰!求皎成 1、单机和主备部署模式主■Ml / 1・1《■大可陶)成1・2 (■大保护)主缶,是亍蝴煜丑集唳愠备 / ♦机性般可*是需沃的肯兄下,,爆帝高可用I 0HKS4 Ek / 电! 2、分布式部署模式 /分布丈#展:IMK技shard钊分,读勇员的旭性扩NT *1翊岫£务量埸宣 /分布丈高可用:支挎快拦 E高可用魅岩(四) (四) ^wdl Shard2ShirdN 典型的分布式部署架构 业务应用 业务应用 S
27、torage Storage Storage Storage 各组件说明如下: OM (Operation Manager):运维管理模块。提供集群日常运维、配置管理的管理接 口、工具。 CM (Cluster Manager):集群管理模块。管理和监控分布式系统中各个功能单元和 物理资源的运行情况,确保整个系统的稳定运行。 CN (Coordinator Node):协同调度节点。负责接收来自应用的访问请求,并向客户 端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。集群中,CN 有多个且CN的角色是平等的。 DN (Datanode):数据节点。负责存储业务数
28、据,执行数据查询任务以及向CN返回 执行结果。在集群中,DN有多个。每个DN支持设置多个存储藏机。 GTS (Global Time Server):全局时钟服务器。用于强一致场景下,为各个节点提 供逻辑时钟。 五、主流关系型数据库特点分析 数据库名称苔 优点3 缺点3 Oracle— > 可运行于所有主流平台上运行(包括 windows),支持所有工业标准;“ > 采用进程模式,对多CPU利用率高,性能好;“ > 支持非常复杂的查询和所有类型的连接与合并;" > 有基于本钱的SQL优化器,可以对SQL进行分 析、重写和简化、并基于本钱选择索引、确定对 表的操作等;" >
29、 是一款优秀的商业软件,•平安性较高,使用广 泛:卜 >计算能力强,可用于处理复杂的业务逻辑- > 对硬件的要求较高;3 > L姑§熙金本钱高。3 PostgreSQL*3 > 是一款开源、免费,同时又是强大的关系型数据 管理系统;“ > 附带有许多强大的、开源的第二方工具来缩助系 统的设计、管理和使用;3 > 采用进程模式,对多CPI•利用率高,性能好;" > 计算能力强,可用于处理复杂的业务送辑。- >不适合繁重的读操作;" > 国内社区活跃度不如 MySQL• 3 MySQL" > 开源,提供的接口支持多种语;I连接操作;" > 可在所有主流平台上运行(包括w
30、indows) ; a >采用多线程模式,可支持更多的连接:" > 使用广泛,有大量的案例支持;" > 在开源数据库社区中,活跃度最高。“ > 平安机制较差,不建议用 于平安性要求很高的系 统:“ >对存储过程和触发器支持 不够良好,不建议业务逻 辑在数据库上实现的系 统;W > 只支持局部SQL语法,不 支持递归查询、分析函数 等;0 > 已被Oracle收购。3 国产数据库。 > 自主研发,符合监管自主可控要求;" > 具有较强的计算能力,数据库可用于处理业务避 辑;“ > 目前主要兼容Oracle。3 > 产品推出市场时间不长, 产品的成熟度有待市•场验 证;“
31、 >应用案例较少- 【摘要】常用的关系型数据库有闭源系列和开源系列,闭源系列有国外数据库(如 Oracle> DB2等)和国产数据库(如GaussDB T等);开源系列有MySQL、PostgreSQL 等。本文拟介绍几种常用关系型数据库的架构和实现原理,以方便广大用户更进一步了 解。涉及产品最新参数指标等请以各官网为准。 一、Oracle(一)Oracle 架构 Oracle Server包括数据库(Database)和实例(Instance)两大局部,两者相互独立。数据库由数据文件、控制文件和日志文件组成,实例由内存池和后台进程 组成,示意图如下: I Parameter
32、 tUe Data files CgNTOl RedoLog Password file Database Archived Log hies 一台Oracle Server可创立多个I)atabase,不同的Database之间相互独立。每 个Database有属于自己的全套相关文件,如:密码文件,参数文件,数据文件,控 制文件和日志文件 Database由一系列物理文件(如二维表文件)组成。用户不能直接读取Database 中的内容,必须通过Oracle instance才能读取,一个Instance只能连接一个 Databa
33、se,但是一个Database可以被多个Instance连接。 各功能组件说明如下: 1、用户连接进程 用户连接进程是连接用户和Oracle Instance的桥梁。包括:用户进程、服务进 程和PGA ■ 用户进程User Process当一个 Database User 请求连接到 Oracle Server 时,Oracle Server 创立的 User Processo ■ Server Process 服务进程用于处理Database User和Oracle Server之间的连接。 ■ 程序全局区PGA PGA:由Server Process分配,用于当前User
34、Session的内存区,不同的用 户拥有不同的PGA。PGA包含了 Server Process数据和控制信息的内存区域。包括栈 空间、Session Info> 私有 SQL 区。 2、SGA (System Global Area) SGA与Oracle性能息息相关,在Instance启动时被分配,关闭时被释放。主要 包含如下几种数据结构: ■ 数据库缓冲区(Database buffer cache ) oracle执行SQL语句的区域。当进行数据更新或数据查询时,用户执行的 SQL语句不会直接对磁盘上的数据文件进行更改操作,而是首先将数据文件复制到数 据库缓冲区缓存,再更改或查
35、询缓存中的副本。此外,被频繁访问的数据块会存在于 数据库缓冲区缓存中。 ■ 日志缓冲区(Redo log Buffer)用于短期存储redo logo ■共享池(Shared Pool) 用于缓存所有频繁执行的代码和频繁访问的对象定义。共享池内有以下三种数 据结构: o库缓冲(library cache):存储最近执行的代码o数据字典缓存(data dictionary cache):存储最近使用的对象定义 o PL/SQL缓冲区(PL/SQL buffer):用于存储过程、函数、打包的过程、打 包的函数、对象类型定义和触发器。 大型池(Large Buffer)用于共享的服务器进
36、程。 JAVA 池(Java Buffer): 只有当应用程序需要在数据库中运行java存储程序时,才需要java池。 3、后台进程 后台进程主要用于数据库管理,是Oracle Instance和Oracle Database的联 系纽带,分为核心进程和非核心进程。 1) 核心进程: , 数据库写入进程(DBWn) Server process连接Oracle后,通过数据库写进程(DBWn)将数据缓冲区中 的“脏缓冲区”的数据块写入到数据文件; ■检查点进程(CKPT) Checkpoint (CKPT)检查点进程主要用于更新数据文件头,更新控制文件和触 发DBWn数据库写进
37、程。 , 进程监视进程(PMON) 当后台进程执行失败后负责清理数据库缓存和闲置资源,是Oracle的自动维 护机制。 -系统监视进程(SMON)用途如下: O当数据库实例崩溃时,用于数据库实例的自动恢复。 O清除作废的排序临时段,回收整理碎片,合并空闲空间,释放临时段, 维护闪回的时间点。 ,重做日志文件和日志写入进程 用于记录数据库的改变和记录数据库被改变之前的原始状态,当满足以下条 件时,激活LGWR: o提交指令o日志缓冲区超过1/3 o 每三秒O每次DBWn执行之前 2) 非核心进程归档进程(ARCn) 是可选的后台进程,当数据库处于ArchiveLog模式时,
38、自动归档redo log, 并保存数据库的所有修改记录。 SGA (System Global Area)和后台进程组成 Instance。 4、存储结构存储结构可从物理结构和逻辑结构两方面理解。 1)物理结构 Database物理结构:是Database在操作系统中的文件集合,艮"磁盘上的物理 文件,主要由数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令 文件组成。 数据文件、重做日志文件、控制文件、跟踪文件、警告文件属于数据库文件 ■ Data Files数据文件是数据的存储仓库,数据被使用时才被调入内存中的。 ■ Redo Log Files 重做日志文件包
39、含对数据库所做的更改操作记录,在Oracle发生故障时能够 恢复数据。 ■ Control Files 控制文件包含维护和验证数据库完整性的必要的信息。例如,控制文件用于识 别数据文件和重做日志文件,一个数据库至少需要一个控制文件。 ・跟踪文件(Trace Files) instance中运行的每一个后台进程都有一个跟踪文件(trace file)与之相 连。Trace file记载后台进程所遇到的重大事件的信息。 ■ 警告日志(Alert Log) 是一种特殊的跟踪文件,每个数据库都有一个跟踪文件,同步记载数据库的消 息和错误。 参数文件、口令文件、归档文件属于非数据库文件。
40、 ■ Parameter File 实例参数文件,当启动oracle实例时,SGA结构会根据此参数文件的设置内 存,后台进程会据此启动。 ■ Password File用户通过提交username/password来建立会话,Oracle根据存储在数据字典 的用户定义对用户名和口令进行验证。 归档文件是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。 2)逻辑结构 ■ 表空间 用于存储数据库对象的逻辑空间,是信息存储的最大逻辑单位,是一系列数据 文件的集合。一个数据库可以由多个表空间组成,每个表空间包括多个段。 -段: 是对象在数据库中占用的空间。段是区的
41、集合 ■ 区: 是为数据一次性预留的一个较大的存储空间,区是块的集合 -块: ORACLE最基本的存储单位,在建立数据库的时候指定,并被映射到磁盘块。 3)逻辑空间到物理空间的映射Oracle数据咋 i 1 逻N N 轩t表空网 物即文件 卜勺逻批对象(衣、视图笠) 1 物 JT. 数捆段索引段 1 1 N 构 数抑;区网索弓1区m N 数据块数据块 物理块 (^)Oracle RDBMS的运行过程 1. User访问Oracle Server之前提交一个请求(包含了 db name> password> instance_name> use
42、rname 等信息); 2. Oracle Server接收到请求并通过Password File的验证后,分配SGA内存池, 启动后台进程同时创立并启动实例; 3. 启动实例之后,User Process 与 Server Process 建立 Connect;Server process 和 Oracle Instance 建立 Sesscion,随后接收用户请求,执 行相关操作; (三)写SQL语句的执行过程1 .用户执行SQL语句,Server process收到后,将SQL语句送到Instance,再 将SQL语句载入数据库缓冲区。 2. Server Process通知Or
43、acle Database将与SQL语句相关的数据块副本加载 到缓冲区中。 3. 在数据库缓存区执行SQL语句,修改数据文件副本,形成“脏缓冲区” 4. CKPT检查到”脏缓冲区”,调用DBWn数据库写进程,在DBWn运行之前,先运行了 LGWR,将数据文件的原始状态和数据库的改变记 录到 Redo Log Files 5. 运行DBWn,将“脏缓冲区的内容写入到数据文件” 6. 同时CKPT修改控制文件和数据文件头 7. SMON回收不必要的空闲资源 9 .返回结果给用户(四)Oracle的高可用性架构 1、Oracle RAC (Real Application Cluste
44、rs)RAC是Oracle数据库的一个群集解决方案,包括计算层和存储层。如以下图所示: 计算节点1 计算层 集群管理 通讯层 侦听 监控 磁盘共享驱动 /\J 缓存聚合 密码文件 仔儒 存储层 Redolog Undo 参数文件 归档日志 节点1 通讯层 集群管理 计算节点n 侦听 监控 磁盘共享驱动 本地 存储 密码文件 Redolog Undo 参数文件 归档日志 节点n 共享存储(NFS、OCFS、OCFS2、RAW、ASM) 1) 存储层一一共享存储Oracle RA
45、C的核心是共享磁盘子系统,集群中所有节点必须能够访问所有数据文件、 重做日志文件、控制文件和参数文件,因此,这些文件必须存放在共享存储中。常用 的共享存储方式有OCFS、OCFS2、RAW、NFS、ASM等。说明如下: OCFS (Oracle Cluster File System) 和 0CFS2 都是文件系统,和 NFS 一样,提 供集群环境共享存储的文件系统。 RAW裸设备也是一种存储方式。把共享存储映射到RAW Device, Oracle在存储数据 时,选择RAW device存储即可。但相对于文件系统来说,RAW不直观,不便于管理, 而且有数量的限制,现已被OCFS取代。
46、ASM是一种数据库存储的方案,并不是cluster的方案,使用ASM时,还需使用 OCFS/OCFS2 或 RAWo计算层 计算层至少需要两台以上的服务器,在每台服务器上安装集群软件和Oracle的RAC 组件,从逻辑结构上看,每个节点都有一个独立的实例,这些实例访问同一个数据库。 节点之间通过集群软件的通信层(Coinnmnication Layer)进行通信,利用高速缓存 合并技术,实现集群中各节点缓存的高速同步,使得集群中的每个实例,都保存了一 份相同的数据库cacheo从而最大限度地低降低磁盘I/O。因此,RAC有如下特点: o每一个节点的实例都有自己的SGA; O每一个节点的实例
47、都有自己的后台进程 O每一个节点的实力都有自己的redo logs o每一个节点的实例都有自己的undo表空间 o 所有节点都共享一份datafiles和controlfiles2、 Data Guard 在Data Gurad环境中,至少有两个数据库,一个主库(Primary Database)处 于Open状态,另一个备库(Standby Database)处于standby状态。 备库又分物理库和逻辑库。物理库和主库完全一样,通过REDO应用来保持与主库的 数据一致性,支持只读服务;逻辑库通过SQL应用,在备库端执行和主库同样的SQL 语句,以此来保持与主库的数据一致,因此文件的物理结构(甚至数据的逻辑结构) 都可以与主库不一致。逻辑库支持读写服务。 Data Guard适合多机房方案,实际部署时,主库部署在主机房,备库部署在其他机 房。






