分布式数据库中的事务管理和恢复
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
集中式事务与分布式事务的比较: 继承——外部特性 扩充——执行方式不同,ACID特性复杂 恢复
在分布式数据库系统中,一个分布式事务即 全局事务,通常由一个主(父)事务和在不同 站点上执行的子事务(局部事务)组成。
一般的,主事务负责事务的开始,提交和异 常中止。
各个子事务完成对相应站点上数据库的访问 操作。
一致性(consistency)——指事务的正确性,或者说一个 分布式事务是一个使分布式数据库从一个一致状态转变为另一 个状态的正确程序。例如在一个银行系统中,最关键的不变性 是资金守恒规则。在任何内部转帐之后,银行的资金账目应与 转帐前保持一致,但是在事务执行的短暂时刻内,这种不变性 会受到损害。然后,事务结束之后,这种损害就没有了。如果 若干个事务并发执行的结果与按希望的顺序串行执行的结果时 等价的,称该若干个事务的并发执行是可串行的,且其结果是 正确的。因此,一致性特征也用可串行性(serializability)特征 表示,此时,事务具有ASID特性。
3)只ቤተ መጻሕፍቲ ባይዱ总代理才能请求建立新的事务代理;
4)各站点上的子事务都执行成功,总代理才能决 定提交该事务,否则总代理将决定撤销该事务。
FUND_TRANSFER:
Read(terminal,$AMOUNT,$FROM_ACC,$TO_ACC); Begin_Transaction; Select AMOUNT into $FROM_AMOUNT from ACCOUNT where ACCOUNT_NUMBER=$FROM_ACC; if $FROM_AMOUNT-$AMOUNT<0 then abort else begin Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT where ACCOUNT_NUMBER=$FROM_ACC; Update ACCOUNT set AMOUNT=AMOUNT-$AMOUNT where ACCOUNT_NUMBER=$TO_ACC; Commit end 图4.1全局级的FUND_TRANSFER事务
例如:
某银行的存款系统,账号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已经提交, 其产生的结果是无法由系统来撤销的。
(1)两个概念 进程: 是一个具有一定独立功能的程序关于某个数据集合的一次运
行活动。它有两个侧面 : 进程说明 :定义进程的行为模式, 包括数据和对数据的一组 操作, 执行这组操作, 完成某一功能。 进程执行:按进程说明中所定义的模式来启动这个进程,执 行其中的那组操作。 事务代理(Agent):在分布式数据库系统中,为了完成在不同站 点上的相应功能,分布式应用必须在这些站点中执行若干进 程,这些进程就称为该应用在那个站点上的“事务代理”。 所 以,一个事务代理是一个本地进程,它代表应用来执行某些 动作。启动一个事务造成在某一站点开始执行那个事务代 理。这个事务代理的执行又可能引起在另一个站点开始执行 另一个事务。
全局事务——一个要求访问或更新多个站点 上数据的事务。
局部事务——一个仅仅访问或更新一个站点 上数据的事务。
2. 分布式事务的特性
分布式数据库系统中的事务也应具有事务的ACID四个特性。即:
原子性(atomicity)——指事务执行时的不可分割性。这 个特性确保了每个事务要么全部发生,要么全部不发生。如果 发生,就是不可分割的瞬间的操作。当一个事务处在处理过程 中时,其他进程(无论是否与事务有关)都不能看到任何中间 状态。
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.分布式事务的定义
事务——是为了实现特定的业务功能,而访问 数据库的一个最小的逻辑工作单位,它是一个操作 序列。
分布式事务——在分布式系统中,任何一个应 用的请求最终都将转化成对分布在网络中相应站点 上数据库存取操作的序列,因此分布式数据库系统 中的事务是一个分布式操作的序列,因被操作的数 据分布在不同的站点上,所以称为分布式事务。
隔离性(isolaty)——指在一个正在执行的事务在其提交之前, 决不允许把它对共享的数据所作改变的结果提供给其他事务使 用。这就是说,事务的执行似乎与其他事务相隔离,即事务的 执行不应受到其他并发事务执行的干扰。保持事务的隔离性是 有许多原因的,保证维护事务的交互一致性是原因之一。
耐久性(durability)——指一旦某个事务被提交了,则无论系 统发生任何故障,都不会丢失该事务的执行结果。这就是说, 已提交事务对数据库的改变在数据库中应该是持续存在的,这 些改变不会因为故障而发生丢失。
由于分布式数据库的分布特性,使得分布 式事务还具有自己独有的特性:在分布式事务 中,除需要考虑访问数据库的存取操作序列外 ,还必须考虑大量的数据传送,通信原语和控 制报文等,这些都是分布式事务所特有的性质。
4.1.2 分布式事务的结构和事务状态
1. 分布式事务的结构
应用
分布式事务
分布式事务
子
子
(2)进程的协作
为了协调地执行分布式应用的全局操作,分驻于不 同站点的诸事务代理必须进行协调。为考虑事务的特性, 把各站点上的诸代理组建成协作进程来完成一个全局应 用,并作如下规定:
1)每一应用均有一个负责启动整个事务的总代理 或称根代理,建立总代理的站点称为源站点;
2)只有总代理才能发出全局有效的事务开始,提 交和撤销原语;
事
事
务
务
子
子
事
事
务
务
分布式事务
子
子
事
事
务
务
分布式事务的一般结构为: Begin Transaction 原语:开始一个事务 T1 [ T2 [ : 子事务或操作序列 : Tn [ Commit 原语:事务成功完成的结束
RollBack 或Abort原语:事务失败的结束
2. 分布式数据库中进程的协作