




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分布式事务概述分布式事务的执行和恢复两阶段提交协议分布式数据库中的数据更新分布式事务增强数据库一致性总结 分布式数据库中的事务管理和恢复 第4章 事务概念 事务是访问或更新各种数据项的最小逻辑工作单位 它是一个操作序列它可以使数据库从一个一致状态到另外一个一致状态事务必须保证数据库的一致性事务执行期间数据库可能不一致 当事务提交 commit 时数据库必须是一致的 事务T开始 事务T结束 事务T的执行 数据库一致 数据库一致 数据库可能临时不一致 事务概念 分布式事务 集中式事务和操作数据在一个站点上不存在传输费用分布式操作数据分布在不同的站点上事务也在多个站点上执行分布式事务是集中式事务的扩充站点和通信连路故障都可能导致错误发生分布式事务的恢复要比集中式事务复杂的多 事务分类 全局事务通常由一个主事务和在不同站点上执行的子事务组成主事务 负责事务的开始 提交和异常终止子事务 完成对相应站点上的数据库的访问操作局部事务仅访问或更新一个站点上的数据的事务 分布式数据库中的事务 ACID特性原子性 Atomicity 事务的操作要么全部执行 要么全部不执行 保证数据库一致性状态一致性 Consistency 事务的正确性 串行性 并发执行的多个事务 其操作的结果应与以某种顺序串行执行这几个事务所得的结果相同 持久性 Durability 当事务提交后 其操作的结果将永久化 而与提交后发生的故障无关 分布式事务特性 隔离性 Isolation 虽然可以有多个事务同时执行 但是单个事务的执行不应该感知其他事务的存在 因此事务执行的中间结果应该对其他并发事务隐藏此外 分布式数据库系统中还要考虑数据传送 通信原语和控制报文等 全局事务的主事务和子事务全部成功提交 才能改变数据库状态 有一个失败 其他子事务操作都要撤销 分布式事务特性 从账号A向账号B转账 50 1 read A 2 A A 503 write A 4 read B 5 B B 506 write B 分布式事务特性举例 一致性要求 事务执行后A和B账号的总金额不变原子性要求 如果事物在第3步和第6步之间故障 系统应该保证事务对数据库的修改没有产生 否则将导致不一致性 分布式事务特性举例 持久性要求 一旦用户通知说事务已经完成 即 50转账成功 那么由该事务对数据库的修改就必须保证是永久的 即使是发生故障也如此 分布式事务特性举例 独立性要求如果在第3步和第6步之间 允许其他事务访问被修改的数据库的中间结果 那么它将见到一个不一致的数据库 也就是说 A B的和少于它的正确值 当然事务的串行执行将不会出现这种情况 但是数据库中事务并行执行的优点就损失了 分布式事务特性举例 BeginTransaction原语 开始一个事务T1 T2 子事务或操作序列 Tn Commit原语 事务成功完成的结束Rollback或Abort原语 事务失败的结束 分布式事务的一般结构 活动从事务开始执行的初始状态始 事务执行中保持该状态部分提交事务的最后一个语句执行后进入该状态 失败一旦发现事务不能正常执行时进入该状态终止表示事务已经离开系统提交当事务成功执行后 分布式事务的状态 分布式事务的状态 进程 系统中可以并行执行的一段操作序列 分布式事务中的子事务序列是进程方式完成的进程说明 定义进程的行为模式 数据和数据上的操作 功能等进行执行 按模式来启动这个进程 执行其中的操作过程 不可并行执行的操作序列事务代理 Agent 应用在各个Site上执行的若干进程 称作应用在该Site上的代理 代理可以执行应用程序员写的程序 也可以执行系统的原语函数 不同代理间通过报文实现通讯根代理 RootAgent 应用启动Site上的代理 根代理所在的Site称作原发Site 一般 根代理负责发系统原语 只有根代理可以请求创建新代理 进程相关定义 每一应用均有一个负责启动整个事务的总代理 根代理 为了协调执行分布式应用的全局操作 分驻于不同站点的诸事务代理必须进行协调 有如下规定 每一应用都有一个负责启动整个事务的总代理 或称根代理 只有总代理才能发出全局有效的事务开始 提交和撤消原语只有总代理才能请求建立新的事务代理各站点上的子事务都执行成功 总代理才能决定提交该事务 否则总代理将决定撤销该事务 进程协作 转账应用 事务在两个账户之间执行 基金汇兑 操作 如果汇兑的金额小于转出帐号现有金额 就撤销如果大于等于就提交全局关系Account Account number Amount 假设账户分布在网络的不同站点上 全局级转帐事务FUND TRANSFER read terminal AMOUNT FROM ACC TO ACC begin transaction selectAMOUNTinto FROM AMOUNTfromACCOUNTwhereACCOUNT NUMBER FROM ACC if FROM AMOUNT AMOUNT 0thenabortelsebeginupdateACCOUNTsetAMOUNT AMOUNT AMOUNTwhereACCOUNT NUMBER FROM ACC updateACCOUNTsetAMOUNT AMOUNT AMOUNTwhereACCOUNT NUMBER TO ACC commitend 输入 汇出金额和转入 转出帐号 事务开始 检查转出帐号中是否有足够的转出资金 更新转出帐号存款余额创建AGENT1向代理1送消息 转入帐号 金额 等待来自AGENT1的消息 成功 提交事务 成功结束 撤消事务 失败结束 ROOT AGENT AGENT 接收来自根代理的信息 更新转入帐号存款余额 发送执行消息给根代理 成功或失败 是 否 否 转账应用处理流程 ROOT AGENT read terminal AMOUNT FROM ACC TO ACC begin transaction selectAMOUNTinto FROM AMOUNTfromACCOUNTwhereACCOUNT NUMBER FROM ACC if FROM AMOUNT AMOUNT 0thenabortelsebeginupdateACCOUNTsetAMOUNT AMOUNT AMOUNTwhereACCOUNT NUMBER FROM ACC createAGENT sendtoAGENT AMOUNT TO ACC commit 这里省略了等待消息和判别 endAGENT receivefromROOT AGENT AMOUNT TO ACC updateACCOUNTsetAMOUNT AMOUNT AMOUNTwhereACCOUNT TO ACC sendtoROOT AGENT SUCCESS FALL 转账事务的两个代理 分布式事务管理问题 处理数据项的多个副本分布式事务处理负责保持同一数据的多个副本之间的一致性 当某个副本所在站点发生故障时 负责生成与该数据其他副本一致的拷贝 以便于及时恢复 单个站点的故障一个站点或多个站点故障时 DDBMS继续与其他正常运行的站点一起继续工作当故障站点恢复时 DDBMS协同故障站点的DBMS 必须使得该站点与系统连接时 局部数据库与其他站点同步通信网络的故障必须能够处理两个或者多个站点间的通信网络故障分布式提交如果提交分布式事务过程中有一个站点发生故障 提交就会产生问题两阶段提交协议用于解决这一问题 分布式事务管理目标 事务管理的任务就是负责当若干个事务并发执行和事务执行发生错误时 使数据库仍保持一致性状态 目标维护事务的ACID性质获得最小的主存和CPU开销 降低报文数目 加快分布式事务的响应时间获得最大限度的可靠性和可用性 故障类型事务故障由非预期的 不正常的程序结束所造成的故障 即事务没有执行到Commit或显示Rollback语句的故障 如 计算溢出 完整性破坏 操作员干预 输入输出错误 死循环等 处理方法 内存 磁盘上信息没有损失 使用Log做Rollback系统故障造成系统停止运行的任何事件 要求系统重启动 如CPU出错 缓冲区满 系统崩溃等处理方法 内存 I OBuffer内容皆丢失 DB没有破坏 恢复时 搜索Log 确定Rollback的事务 介质故障 辅助存储器介质遭破坏处理方法 如数据丢失 日志无损失 从某个Dump状态开始执行已提交事务 数据与日志都丢失不可能完全恢复以上三种可以统称为站点故障 在分布式数据库系统中 除了上述故障外还有因网络引起的故障 通讯故障通讯故障可分为报文故障和网络分割故障报文故障报文错报文失序报文丢失报文延迟网络分割故障 网络断连 由前面分析可知 在分布式数据库系统中 故障的类型很多 当发生事务故障时 保证事务原子性的措施称为事务故障恢复 简称事务恢复 事务恢复主要依靠日志来实现 事务恢复的原则 1 孤立和逐步退出事务的原则对于不影响其它事务的可排除性局部故障 例如事务操作的删除 超时 违反完整性规则 资源 限制 死锁等 应令某个事务孤立和逐步地退出 将其所做过的修改复原 即做UNDO 2 成功结束事务原则成功结束事务所做过的修改应超越各种故障而存在 也就是重做 REDO 它所做过的所有修改数据库的操作 事务恢复的原则 3 夭折事务的原则若发生了非局部性的不可排除的故障 例如系统崩溃 则撤销全部事务 恢复到初态 这有两种做法 一种是利用数据库的备份实现 另一种是即按逆向顺序操作 复原其自从启动以来所做过的一切修改 基本思想将本地原子性提交行为的效果扩展到分布式事务 保证了分布式事务提交的原子性 并在不损坏Log的情况下 实现快速故障恢复 提高DDB系统的可靠性 第一阶段 表决阶段第二阶段 执行阶段两类代理协调者 Coordinator 提交和撤销事务的决定权 一般是根代理参与者 Participants 其它代理 负责在本地数据库中执行写操作 并且向协调者提出提交和撤销子事务的意向 2PC中协调者和参与者的关系 表决阶段目的是形成一个共同的决定首先 协调者给所有参与者发送 准备 消息 进入等待状态其次 参与者收到 准备 消息后 检查是否能够提交本地事务如能 给协调者发送 建议提交 消息 进入就绪状态如不能 给协调者发送 建议撤销 消息 可以单方面撤销第三 协调者收到所有参与者的消息后 他就做出是否提交事务的决定 只要有一个参与者投了反对票 就决定撤销整个事务 发送 全局撤销 消息给所有参与者 进入撤销状态否则 就决定提交整个事务 发送 全局提交 消息给所有参与者 进入提交状态执行阶段实现表决阶段的决定 提交或者撤销 2PC协议的重要特点允许参与者单方面撤销事务一旦参与者确定了提交或撤销协议 它就不能再更改它的提议当参与者处于就绪状态时 根据协调者发出的消息种类 它可以转换为提交状态或者撤销状态协调者根据全局提交规则做出全局终止决定协调者和参与者可能进入互相等待对方消息的状态 使用定时器 保证退出消息等待状态 集中式通讯只发生在协调者和参与者之间 参与者之间不交换信息分层式协调者是在树根的DTM代理者 协调者与参与者之间的通讯不用直接广播的方法进行 而是使报文在树中上下传播 每个DTM代理是通信树的一个内部节点 它从下层节点处收集报文或向它们广播报文 线性参与者之间可以互相通信 系统中的站点间要排序 消息串行传递 支持没有广播功能的网络分布式允许所有参与者在第一阶段相互通信 从而可以独立做出事务终止决定 2 3 4 5 1 2 3 4 5 1 1 协调者 参与者 协调者 协调者 参与者 第一阶段 第二阶段 准备 建议撤消 提交 全局撤消 提交 提交 撤消 集中式 3 4 2 5 1 5 1 1 协调者 参与者 协调者 协调者 参与者 第一阶段 第二阶段 准备 建议撤消 提交 全局撤消 提交 提交 撤消 2 3 4 2 2 分层式 1 2 3 4 n 第一阶段 第二阶段 准备 建议提交 撤消 建议提交 撤消 建议提交 撤消 全局提交 撤消 全局提交 撤消 全局提交 撤消 全局提交 撤消 线性式 1 n 4 3 2 4 3 2 1 n 协调者 协调者 协调者 参与者 第一阶段 准备 建议撤消 提交 全局撤消 提交可独立做决定 分布式 多站点数据更新方法 站点A上有事务T对X更新 X在B1 Bn和C1 Cm上有副本 则也要对这些副本更新问题多个站点同时更新不现实 每一个站点某一时刻与站点A连通的概率小于1 对未连通站点上的副本更新增多时出错 更新的顺序也不一定是连通顺序 主文本更新思想 指定主副本 修改只对主副本进行 修改辅助副本时 也按在主副本上执行的更新顺序执行问题修改传播必须在短时间内完成 否则将获得 过时 数据主副本不可用 引得其他副本也不可用 未连通 T1在T2之前 移动主文本法若初次更新在辅文本上进行 然后再把更新引向该数据的主站点如果主站点此时尚未连通 则另选一个辅站点中的辅文本为该数据新的主文本进行更新待原主文本站点连通后 系统将自动把它改为辅文本 并按记录要求执行更新如果初次更新在主文本上进行 但主文本站点与网络未接通 则此次更新操作失败 事务被撤销 因为无法传播更新移动文本法的问题网络分割成很多部分时 更新处理会不一致网络分割成W1 W2 W1中X更新为R W2中X更新为S 网络连通时 使用R还是S来恢复X呢 快照 Snapshot 与视图相似 是导出的关系快照的数据是实际存放在数据库中的 视图不是周期地更新用于某些需要 冻结 数据的应用 例子DefineSnapshotHP BookasSELECT FROMBookWHEREPrice 100REFRESHEveryday特点快照不考虑数据的辅助副本 只关心主文本和这个主本上定义的多个快照快照与视图一样可以定义为一个或多个主副本的部分或全部快照可以完成复杂的查询 但又不阻止更新查询操作可使用快照 也可使用主文本 对更新操作还是在主文本上进行 业务规则约束有效性约束 域约束 数据项的取值范围数据依赖约束 实体完整性和引用完整性例子取现金时一个账户的存款余额必须大于零转账时一个账户的存款余额必须大于零 事务结束时 两账户中存款总和 必须与事务开始时两账户存款之和相同定期利息计算事务执行后 所有账户存款之和比事务开始前各账户存款总和大于10 假定利息是总额的10 业务规则要强制执行用户编写的事务中由DBMS事务优化器产生的事务中在产生的分布式执行方案中 要编入业务规则的强制条件或者从数据字典中获取相关的业务规则 并在生产分布式事务的时候使用它多数商用分布式DBMS的事务优化器 只加入少数几类业务规则 为了补救这种不足 需要程序员必须编写加进业务规则的分布式事务必须定期对数据库进行扫描 监测不一致的数据 并予以清除找出那些没有实施的 不能由事务优化器加上的强行业务规则 分布式数据库冗余设计的理由提高系统的可用性和可靠性如果用户由于某种原因无法访问某个成员数据库 它可以访问另外一个成员数据库上的相同片断提高 读 事务的本地性降低通信成本例如 一个片断存放在该事务的原发站点中 那么就免除了传输请求和返回结果的花费但是 如果事务包含对片断的更新 则其所有副本也必须做同样的更新 这时反而增加而不是降低通信成本 例子 site1 site2 T1 Read x x x 1 1write x T2 Read x x x 20write x 设数据x在两个站点都有副本 两个事务分别执行 这样两个事务的执行会产生不同的结果 设置x 50 T2T1的执行顺序得到x 33 x 20 1 1 50 20 1 1T1T2的执行顺序得到x 35
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医学伦理学道德情操测评模拟考卷答案及解析
- 2025年科研方法论医学科研设计及数据分析模拟考卷答案及解析
- 农业种植区节水灌溉工程合同
- 2025年消化内科肝胆常见病诊断治疗模拟测试答案及解析
- 2025年皮肤科用药常识考察试卷答案及解析
- 2025年中医科针灸治疗颈椎病对症取穴考核答案及解析
- 家具配件厂成品包装管理制度
- 家具配件厂库存预警监测管理办法
- 2025年营养学膳食搭配与健康管理答案及解析
- 2025年消化内科胃溃疡的饮食调理知识考核模拟测试卷答案及解析
- T-ZZB 2229-2021 商用车轮毂专用螺栓、螺母和垫圈
- 船舶科普知识儿童课件
- 新消防法培训课件
- 机关食堂服务员工作职责
- 陶板幕墙施工方案
- 线路运维巡视实施方案
- 《国内外绩效考核指标体系研究现状文献综述》4200字
- 工程造价职业技能比武竞赛参考试题(附答案)
- 天津第一中学2025-2025学年高三下学期3月月考英语试卷(含答案)
- 农场生态农业循环产业园项目方案书
- 合同权利转让合同范例
评论
0/150
提交评论