分布式数据库中的事务管理和恢复_第1页
分布式数据库中的事务管理和恢复_第2页
分布式数据库中的事务管理和恢复_第3页
分布式数据库中的事务管理和恢复_第4页
分布式数据库中的事务管理和恢复_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章分布式数据库中的事务管理和恢复小组成员:王波翟晓玲翟冰冰,4.1分布式事务概述4.2分布式事务的执行与恢复4.3两阶段提交协议4.4分布式数据库中的数据更新4.5分布式事务增强数据库一致性4.6本章小结,4.1分布式事务概述,4.1.1分布式事务定义和特性4.1.2分布式事务的结构和事务状态4.1.3分布式事务管理的问题和目标,4.1.1分布式事务定义和特性1.分布式事务的定义事务是为了实现特定的业务功能,而访问数据库的一个最小的逻辑工作单位,它是一个操作序列。分布式事务在分布式系统中,任何一个应用的请求最终都将转化成对分布在网络中相应站点上数据库存取操作的序列,因此分布式数据库系统中的事务是一个分布式操作的序列,因被操作的数据分布在不同的站点上,所以称为分布式事务。,集中式事务与分布式事务的比较:继承外部特性扩充执行方式不同,ACID特性复杂恢复,在分布式数据库系统中,一个分布式事务即全局事务,通常由一个主(父)事务和在不同站点上执行的子事务(局部事务)组成。一般的,主事务负责事务的开始,提交和异常中止。各个子事务完成对相应站点上数据库的访问操作。全局事务一个要求访问或更新多个站点上数据的事务。局部事务一个仅仅访问或更新一个站点上数据的事务。,2.分布式事务的特性分布式数据库系统中的事务也应具有事务的ACID四个特性。即:原子性(atomicity)指事务执行时的不可分割性。这个特性确保了每个事务要么全部发生,要么全部不发生。如果发生,就是不可分割的瞬间的操作。当一个事务处在处理过程中时,其他进程(无论是否与事务有关)都不能看到任何中间状态。一致性(consistency)指事务的正确性,或者说一个分布式事务是一个使分布式数据库从一个一致状态转变为另一个状态的正确程序。例如在一个银行系统中,最关键的不变性是资金守恒规则。在任何内部转帐之后,银行的资金账目应与转帐前保持一致,但是在事务执行的短暂时刻内,这种不变性会受到损害。然后,事务结束之后,这种损害就没有了。如果若干个事务并发执行的结果与按希望的顺序串行执行的结果时等价的,称该若干个事务的并发执行是可串行的,且其结果是正确的。因此,一致性特征也用可串行性(serializability)特征表示,此时,事务具有ASID特性。,隔离性(isolaty)指在一个正在执行的事务在其提交之前,决不允许把它对共享的数据所作改变的结果提供给其他事务使用。这就是说,事务的执行似乎与其他事务相隔离,即事务的执行不应受到其他并发事务执行的干扰。保持事务的隔离性是有许多原因的,保证维护事务的交互一致性是原因之一。耐久性(durability)指一旦某个事务被提交了,则无论系统发生任何故障,都不会丢失该事务的执行结果。这就是说,已提交事务对数据库的改变在数据库中应该是持续存在的,这些改变不会因为故障而发生丢失。,例如:某银行的存款系统,账号001的存款余额为0元。分布式事务T由两个子事务T1和T2组成。站点i上的事务T1在001账号中存入1000元。如果在事务T1还未提交之前,站点j上的事务T2读取此1000元,并从001账号中取走1000元,事务T2提交,此时现金1000元就交给事务T2的用户。假定此时因某种原因,使事务T1的存款操作无效,即事务T1撤销。事务T1的撤销要求事务T2也撤销,因为事务T2的操作是建立在事务T1操作的基础上的。但是此时要撤销事务T2的操作是不可能的了,因为事务T2已经提交,其产生的结果是无法由系统来撤销的。,由于分布式数据库的分布特性,使得分布式事务还具有自己独有的特性:在分布式事务中,除需要考虑访问数据库的存取操作序列外,还必须考虑大量的数据传送,通信原语和控制报文等,这些都是分布式事务所特有的性质。,4.1.2分布式事务的结构和事务状态,应用,分布式事务的结构,分布式事务,分布式事务,分布式事务,子事务,子事务,子事务,子事务,子事务,子事务,分布式事务的一般结构为:BeginTransaction原语:开始一个事务T1T2:子事务或操作序列:TnCommit原语:事务成功完成的结束RollBack或Abort原语:事务失败的结束,2.分布式数据库中进程的协作(1)两个概念进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它有两个侧面:进程说明:定义进程的行为模式,包括数据和对数据的一组操作,执行这组操作,完成某一功能。进程执行:按进程说明中所定义的模式来启动这个进程,执行其中的那组操作。事务代理(Agent):在分布式数据库系统中,为了完成在不同站点上的相应功能,分布式应用必须在这些站点中执行若干进程,这些进程就称为该应用在那个站点上的“事务代理”。所以,一个事务代理是一个本地进程,它代表应用来执行某些动作。启动一个事务造成在某一站点开始执行那个事务代理。这个事务代理的执行又可能引起在另一个站点开始执行另一个事务。,(2)进程的协作为了协调地执行分布式应用的全局操作,分驻于不同站点的诸事务代理必须进行协调。为考虑事务的特性,把各站点上的诸代理组建成协作进程来完成一个全局应用,并作如下规定:1)每一应用均有一个负责启动整个事务的总代理或称根代理,建立总代理的站点称为源站点;2)只有总代理才能发出全局有效的事务开始,提交和撤销原语;3)只有总代理才能请求建立新的事务代理;4)各站点上的子事务都执行成功,总代理才能决定提交该事务,否则总代理将决定撤销该事务。,FUND_TRANSFER:Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Begin_Transaction;SelectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhereACCOUNT_NUMBER=$FROM_ACC;if$FROM_AMOUNT-$AMOUNT0thenabortelsebeginUpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT_NUMBER=$FROM_ACC;UpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT_NUMBER=$TO_ACC;Commitend图4.1全局级的FUND_TRANSFER事务,ROOT_AGENTAGENT:,输入:汇出金额和转出/转入账号,事务开始:检查转出账号中是否又足够的转出资金,更新转出账号存款余额创建代理Agent向代理送信息:转入帐号,金额,等待来自Agent的消息,成功,提交事务:成功结束,否,撤销事务:失败结束,接收来自根代理的消息,更新转入账号存款余额,发送执行消息给根代理(成功或失败),ROOT-AGENT;Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC);Begin_transaction;SelectAMOUNTinto$FROM_AMOUNTfromACCOUNTwhereACCOUNT_NUMBER=$FROM_ACCOUNT;if$FROM_AMOUNT-$AMOUNT0thenabortelsebeginUpdateACCOUNTsetAMOUNT=AMOUNT-$AMOUNTwhereACCOUNT=$FROM_ACC;CreateAGENT;SENDtoAGENT($AMOUNT,$TO_ACC);CommitendAGENT;ReceivefromROOT_AGENT($AMOUNT,$TO_ACC);UpdateACCOUNTsetAMOUNT=AMOUNT+$AMOUNTwhereACCOUNT=$TO_ACC;SendtoROOT_AGENT(SUCCESS/FALL)图4.3两个代理组成的FUND_TRANSFER事务,4.1.3分布式事务管理的问题和目标分布式事务管理的问题(1)处理数据项的多个副本分布式事务管理负责保持同一数据的多个副本间的一致性。(2)单个站点的故障当故障站点得到恢复时,DDBMS协同该故障站点上的DBMS,必须在该站点与系统重新连接时,使它的局部数据与其他站点同步。(3)通信网络的故障系统必须有能力处理一个或多个连接站点的通信网络故障。这个问题的一个极端情况是发生网络分割。(4)分布式提交如果在提交一个分布式事务过程中至少有一个站点发生故障的话,那么这个分布式事务的提交将会产生问题。,2.分布式事务管理的目标事务管理的任务就是负责当若干个事务并发执行和事务执行发生错误时,使数据库仍保持一致状态。,例如:某公司在银行中有A,B两个账号,现在公司想从账号A中取出一万元,存入账号B。那么就可以定义一个事务,该事务包括两个操作,第一个操作是从账号A中减去一万元,第二个操作是向账号B中加入一万元。在事务开始时,数据库是处于一个一致性状态。在事务执行时,如果只做第一个操作则用户逻辑上就会发生错误,少了一万元,这时数据库就处于非一致性状态。当我们接着做第二个操作,且成功提交后,数据库又处在了一致性的状态。,事务管理所追求的理想目标是高执行效率,高并行性和高可靠性。这三大理想目标往往不能兼得,因为他们之间密切相关,而又矛盾。可靠性措施会使效率下降,而事务运行效率不仅取决于采用的策略,还与下列因素有关:(1)CPU和主存利用率(2)控制报文(3)相应时间(4)可用性由此可见事务管理的目标是:(1)维护分布式事务的原子性,一致性,耐久性和隔离性。(2)获得最小的主存和CPU开销,降低控制报文的传输个数和加快分布式事务的响应速度;(3)获得最大限度的系统可靠性和可用性。,4.2分布式事务的执行与恢复,4.2.1分布式事务管理的抽象模型在分布式数据库系统中,事务管理功能分成两个层次。在每个站点上,又类似于集中式数据库系统中的局部事务管理器(LTM)进行局部事务的管理,负责本站点事务的执行,完成对本站点数据库数据的访问;对整个分布式数据库系统,由驻留在各个站点上的分布式事务管理器(DTM)共同协作,实现对分布式事务的协调和管理。,图4.5分布式事务管理的抽象模型,站点1,站点3,站点2,本地事务管理器LTM1,分布式事务管理器DTM1,分布式事务管理器DTM1,本地事务管理器LTM2,分布式事务管理器DTM1,本地事务管理器LTM3,局部事务管理器LTM的结构和功能在许多方面与集中式系统类似,主要包括:(1)保证本地事务的ACID特性;(2)维护一个用于恢复的日志,代替DTM把用于分布式事务执行和恢复的信息记入日志。(3)参与适当的并发控制模式,以协调在该站点上执行的事务的并发执行。接收并听从本站点上DTM代理发来的LOG原语,记入日志并执行之。LOG原语包括:localbegin_transaction,localcommitlocalabort,分布式事务管理器DTM的功能包括:(1)保证分布式事务的ACID特性,尤其是执行分布式事务的原子性,使每个站点的子事务都成功执行,或都不执行。这是通过向各个站点发begin_transaction,commit或abort,create原语来实现的。(2)负责协调由该站点发出的所有分布式事务的执行。包括:启动分布式事务的执行;将分布式事务分解为一些子事务,并将这些子事务分派到恰当的站点上去执行;决定分布式事务的终止,即决定在该分布式事务中所包含的所有站点上的子事务都撤销或都提交。,(3)支持分布式事务的执行位置透明性,这也是分布式事务管理的最基本要求。分布式事务管理器根据事务内部的逻辑划分为若干子事务,按某种要求分布到相应站点上执行,最后由源发站点提供事务的最终结果。它实现了对网络上各站点的各个子事务的监督与管理,完成对整个分布式事务执行过程的调度和管理,从而保证分布式数据库系统的高效率。,4.2.2分布式事务执行的控制模型分布式事务的控制模型是指协调分布式事务中各成员DBMS执行其子事务的通用方法;控制分布式事务执行的控制模型有:1)主从模型2)三角模型3)层次控制模型,图4.6分布式执行的主从控制模型,图4.7分布式执行的三角控制模型,图4.8分布式执行的层次控制模型,4.2.3分布式数据库系统中的故障,4.2.4事务故障恢复的基本概念研究数据库系统中故障的恢复,主要是指如何恢复因故障而破坏的数据库,使数据库恢复到一个正确,一致的状态。恢复的基本原理是数据冗余,即利用冗余存储在别处的信息和数据,部分或全部重建数据库。1.事务故障和事务恢复当发生事务故障时,保证事务原子性的措施称为事务故障恢复,简称为事务恢复。事务恢复主要时依靠日志来实现的。2.事务状态及状态转移为保证可恢复性,系统需要保存事务的起始,终止,提交或撤销的时间轨迹,事务恢复管理器还对下列操作进行跟踪记录。,1)begintransaction:标记事务开始执行。2)read或write:表示事务对某个数据项进行读或写。3)End_transaction:表示事务的读或写操作已经结束,并标记事务执行结束。但是,在这一点,需要检查被该事务所作的改变是否永久写入数据库(已提交),或事务由于违反可串行性或其他原因而被撤销。4)commit_transaction:表示事务已经成功结束,因此事务执行的任何改变可以安全提交到数据库并且不会被撤销。5)rollback(或abort):表示事务没有成功结束,因此必须撤销事务对数据库所作的任何改变或影响。,read/writeBeginendtransactiontransactioncommitabortabort,active,Partiallycommitted,committed,failed,terminated,3.事务的提交点当事务T所有的站点数据库存取操作都已成功执行,并且所有操作对数据库的影响都已记录在日志中时,该事务T就到达提交点(committedpoint).提交点后事务就成为已提交的事务,并且假定其结果已永久记录在数据库中(事务的永久性)。然后事务在日志中写入提交记录commit,T.在系统发生故障时,需要扫描日志,检查那些已在日志中写入start_transaction,T,但没有写入commit,T的所有事务T;恢复时必须回滚这些事务以取消他们对数据库的影响。此外,还必须对日志中记录的已提交事务的所有写操作进行恢复,这样他们对数据库的作用才可根据这些记录重做。需要注意的是,必须将日志文件保存在磁盘上。在事务到达提交点以前,还未写到磁盘的日志的任何部分,必须被写入磁盘,这称为事务提交前强制写(forcewriting)日志。,4.日志,档案库和检查点(1)日志为了能够从故障状态中恢复由影响的事务,系统维护一个日志(log)来保存所有影响数据库项的值的事务操作的信息,这些信息可以用于故障时的恢复。日志保存在磁盘上,这样除了磁盘和灾难性故障外,它不会受到任何影响。另外,日志会被定期备份到归档存储设备(例如磁带)中,以预防磁盘和灾难性故障。下面列出的是日志的条目类型(称为日志记录)和每个类型设计的相关动作。在条目中。T表示唯一事务标识(transaction_id)用于标识每个事务,通常由系统自动生成:,start_transaction,T:表示事务T开始执行。write_item,T,X,旧值,新值:表示事务T已将数据项X的值从旧值改为新值。read_item,T,X:表示事务T已读取数据项X的值。commit,T:表示事务T已成功完成,其结果已被提交(永久记录)给数据库。abort,T:表示事务T已被撤销。Log:记录长度及用于恢复过程的辅助信息,如指向本事务前一日志记录的指针,检查点记录等。,(2)档案库一个大型的系统一天可以很容易地产生大量的Log记录因此,将日志全部存放在盘中是不现实的。故一般将日志划分为两部分,一部分是当前活动的联机部分,存放在直接存取设备上,称为直接存取数据集(directaccessdataset)或简称日志数据集(logdataset).另一部分是档案存储部分,存放在二级存储设备上,例如磁带上。每当数据集满时就转存到档案存储设备中去。存放日志的档案存储设备称日志档案库(logarchive).为了防止因介质故障而破坏数据库,要定期将整个数据库的全部内容转储到档案库中去。存放数据库的档案存储设备称数据库档案库(DBarchive).,(3)检查点为了便于恢复,在日志中增加一类新的记录检查点(checkpoint),以标识检查点前已执行完的事务是正确的,增加一个重启动文件。检查点记录的内容包括:1建立检查点时刻所有正在执行的事务清单。2这些事务最近一个日志记录的地址。重启动文件记录各个检查点记录在日志文件中的地址。每遇检查点,就做如下工作:1)将Log缓冲区内容写入LogDataSet中;2)在LogDataSet中写入这次检查点记录信息:当前活动事务表,每一事务最近一次Log记录在LogDataSet中的位置;3)将DB缓冲区内容写入DB(更新当前DB);4)将这次CheckpointRecord在LogDataSet中的地址记入”重启动文件”中。,在写检查点时,为了保证检查点之前所作的工作都是有效的,防止故障引起缓冲区信息的丢失,因此在写检查点时要将缓冲区中的所有内容写入到永久存储设备中,而且采取“先写日志”的原则。使用检查点方法可以改善恢复效率。当事务T在一个检查点之前提交,T对数据库所做的修改一定都已写入数据库,写入时间是在这个检查点建立之前或在这个检查点建立之时。这样在进行恢复处理时,没有必要对事务T执行REDO操作。,系统出现故障时恢复子系统将根据事务的不同状态采取不同的恢复策略,如图:Tc(检查点)Tf(系统故障)时间t1不要REDOt2REDOt3撤销t4REDOt5撤销T1:在检查点之前提交。T2:在检查点之前开始执行,在检查点之后故障点之前提交。T3:在检查点之前开始执行,在故障点时还未完成。T4:在检查点之后开始执行,在故障点之前提交。T5:在检查点之后开始执行,在故障点时还未完成。,4.2.5事务故障的恢复1.事务恢复的原则(1)孤立和逐步退出事务的原则对于不影响其他事务的可排除性局部故障例如事务操作的删除、超时、违反完整性规则、资源、限制、死锁等,应令某个事务孤立地和逐步地退出将其所做过的修改复原,即做UND0。(2)成功结束事务原则成功结束事务所做过的修改应超越各种故障而存在,也就是重做(REDO)它所做过的所有修改数据库的操作。(3)夭折事务的原则若发生了非局部性的不可排除的故障,例如系统崩溃,则撤消全部事务,恢复到初态:这有两种做法,一种是利用数据库的备份实现;另一种是按逆向顺序操作,复原其启动以来所做过的一切修改。,2.本地事务的恢复本地事务的恢复过程类似于集中式数据库系统中事务的恢复。当故障排除后,由局部事务管理器的恢复子系统执行事务恢复,过程如图4.11所示。,(1)从“重启动文件”中读出最近的CheckpointRecord的地址,定出CheckpointRecord在LogDataSet中的地址;(2)创建REDO表,初态为空:创建UNDO表,将CheckpointRecord中的活动事务表内容复制到UNDO表;(3)从CheckpointRecord起沿Log向前检索,遇begintransaction的Log记录将对应的事务记入UND0表;遇commit的Log记录,将对应的事务从UNDO表移入REDO表,直到Log完。(4)反向检索Log,将UNDO表中的事务,按Log记录的操作,做UNDO,直到遇对应的begintransaction。(5)再从CheckpointRecord起正向

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论