《高级事务处理》PPT课件.ppt

上传人:牧羊曲112 文档编号:5623508 上传时间:2023-08-03 格式:PPT 页数:43 大小:300.50KB
返回 下载 相关 举报
《高级事务处理》PPT课件.ppt_第1页
第1页 / 共43页
《高级事务处理》PPT课件.ppt_第2页
第2页 / 共43页
《高级事务处理》PPT课件.ppt_第3页
第3页 / 共43页
《高级事务处理》PPT课件.ppt_第4页
第4页 / 共43页
《高级事务处理》PPT课件.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《《高级事务处理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《高级事务处理》PPT课件.ppt(43页珍藏版)》请在三一办公上搜索。

1、1,第24章:高级事务处理,事务处理监视器事务工作流高性能事务系统主存数据库实时事务系统长事务多数据库系统的事务管理,2,事务处理监视器,TP监视器最初的开发动机是作为多线程服务器用单个计算机支持大量远程终端.为建立和管理具有大量客户机及多个服务器的复杂事务处理系统提供基础设施.提供的服务如:用来简化创建用户界面的展示机制客户请求和服务器响应的持久队列客户消息到服务器的路由当事务存取多个服务器时的两阶段提交的协调.一些商用TP监视器:IBM的CICS,Tandem的Pathway,NCR的Top End,Transarc的Encina,3,TP 监视器体系结构,4,TP 监视器体系结构(续),

2、每客户一进程模型-服务器进程与终端通信,处理身份鉴证,并执行客户请求的操作.内存需求很高多任务 进程间上下文切换带来的高CPU开销单进程模型 所有远程终端连接到单个服务器进程.用于客户-服务器环境服务器进程是多线程的;线程切换代价较低应用之间没有保护不适合并行或分布式数据库,5,TP 监视器体系结构(续),多服务器单路由器模型 多个应用服务器进程存取共同的数据库;客户通过对请求进行路由的单个通信进程与应用通信.多个应用的独立服务器进程多线程服务器进程在并行或分布式数据库上运行多服务器多路由器模型 多个进程与客户通信.客户通信进程与将客户请求路由到合适服务器的路由器进程交互.控制器进程启动并监控

3、其他进程.,6,TP监视器的详细结构,7,TP监视器的详细结构(续),队列管理器处理输入的消息某些队列管理器提供持久消息队列,即使系统故障队列内容也是安全的.输出消息的持久队列很重要作为事务的一部分,应用服务器写消息到持久队列一旦事务提交,不管是否崩溃,TP 监视器确保消息最终会被递送.这样甚至对发往数据库以外的消息也提供了ACID 性质许多TP 监视器提供封锁,日志和恢复服务,以使应用服务器靠自己实现ACID性质.,8,利用TP监视器协调应用,TP监视器将每个子系统视为对某个资源集合提供事务存取的资源管理器.TP监视器与资源管理器之间的接口是用一组事务原语定义的资源管理器接口由X/Open分

4、布式事务处理标准定义.TP监视器系统为它们的服务提供事务远程过程调用(事务RPC)接口事务RPC提供将一系列RPC 调用包含在事务中的调用.一个RPC执行的更新是在事务域中进行的,如果出现任何故障可以回滚.,Copyright:Silberschatz,Korth and Sudarshan,9,工作流系统,10,事务工作流,工作流是涉及由不同处理实体执行的多个任务的协调执行的活动.随着网络的增长,以及多个自治数据库系统的存在,工作流提供了执行涉及多个系统的任务的方便途径.工作流的例子如电子邮件消息的发送,这需经过若干个邮件系统才能到达目的地.每个邮件系统执行同一个任务:转发邮件到下一个邮件系

5、统.若某个邮件系统不能发送邮件,必须有语义地处理故障(发送故障消息).工作流通常涉及人:例如贷款处理,或订单处理.,11,工作流实例,12,贷款处理工作流,过去,工作流通过创建并转发纸质表格来处理计算机化工作流的目标是使许多任务自动化.但人仍然发挥作用,例如批准贷款.,13,事务工作流,计算机化工作流必须解决下列问题.工作流的说明 详细描述必须执行的任务并定义执行需求.工作流的执行 执行工作流中说明的事务,同时提供传统数据库中有关计算正确性,数据完整性和永久性的安全特性.例如:即使系统发生故障,贷款申请也不该丢失.扩展事务概念到工作流场合.工作流的状态 由组成工作流的任务的状态集合以及执行计划

6、中所有变量的状态(即值)构成.,14,工作流说明,任务协调的静态说明:在工作流开始执行之前必须定义任务和任务间依赖.可为每个任务的执行建立前置条件:仅当满足前置条件时任务才能执行.通过依赖定义前置条件:其他任务的执行状态.“直至任务tj 结束,任务 ti 才能开始”其他任务的输出值.“当任务tj 返回大于25的值,任务ti 可以开始”被外部事件修改的外部变量.“任务tj 结束后24小时内任务ti 必须开始”,15,工作流说明(续),动态任务协调例如:电子邮件路由系统中,为给定邮件消息安排的下一任务依赖于消息的目的地址以及哪些中间路由器在运行.,16,故障原子性需求,通常的ACID事务需求对工作

7、流应用来说过强/不可实现.然而,工作流必须满足某些有限的事务性质以确保过程不会留在一个不一致状态中.可接受终止状态 工作流的每次执行都终止于一个满足设计者定义的故障原子性需求的状态.提交 工作流的目标已经达到.中止 合法的终止状态,工作流未能达到其目标.工作流必须到达可接受终止状态,即使是存在系统故障的情况下.,17,工作流的执行,工作流管理系统包括:调度器 通过提交不同任务去执行,监控各种事件和有关任务间依赖的求值条件来处理工作流的程序任务代理 通过一个处理实体来控制任务的执行.查询工作流系统状态的机制.,18,工作流管理系统体系结构,集中式 单个调度器为所有并发执行的工作流调度任务.用于数

8、据存储于中央数据库的工作流系统.易于跟踪工作流的状态.部分分布式 为每个工作流提供一个调度器(的实例).完全分布式 没有调度器,但是任务代理通过互相通信来协调他们的执行以满足任务依赖和其他工作流执行需求.用于最简单的工作流执行系统基于电子邮件,19,工作流调度器,理想情况下调度器应该仅当确保工作流能够终止于可接受状态时才执行一个工作流.考虑由两个任务S1 和 S2组成的工作流.令故障原子性需求为两个子事务要么都提交要么都不提交.假设执行S1 和 S2 的系统不提供准备提交状态并且 S1 或 S2 没有补偿事务.则有可能到达一个子事务提交而另一个中止的状态.则两者都不能被带到相同状态.工作流说明

9、是不安全的,并且应该拒绝.由调度器确定安全性一般是不可能的,通常交给工作流的设计者.,20,工作流的恢复,确保即使任何工作流处理成员中发生了故障,工作流最终仍到达一个可接受终止状态.故障恢复程序需要恢复调度器在故障时的状态信息,包括每个任务的执行状态的信息.将状态信息登记到稳定存储器.即使出现故障,代理之间的任务交接应该只发生恰好一次.问题:恢复时重复交接可能导致任务的重复执行;不重复交接可能导致任务未被执行.解决方法:持久消息系统,21,工作流恢复(续),持久消息:消息保存在永久性消息队列中,因此故障时不会丢失.Chapter 19(分布式数据库)中有详细描述代理提交之前,将需要发送的任何消

10、息都写到持久消息队列中去.持久消息系统必须保证消息最终被发送当且仅当事务提交.当站点恢复时,如果不知道消息已到达目的地,消息系统需要重发消息.在接收方消息必须登记到稳定存储器以检测一个消息是否多次接收.,Copyright:Silberschatz,Korth and Sudarshan,22,高性能事务系统,23,高性能事务系统,高性能硬件和并行性有助于改善事务处理速率,但是不足以获得高性能:磁盘I/O 是瓶颈 I/O 时间(10 毫秒)没有随处理器速度的增加而以相当的比率减少.并行事务可能试图读或写同一数据项,导致数据冲突进而减少了有效的并行性我们可以通过增加数据库缓冲的大小来减少数据库系

11、统对磁盘的依赖度.,24,主存数据库,商品化的64位系统可支持数十GB的主存.驻留内存的数据使得事务处理速度更快.与磁盘有关的限制:当事务率很高时日志是瓶颈.利用组提交减少输出操作数目.(稍后研究)如果修改了的缓冲块的更新率高,磁盘数据传输率可成为瓶颈.如果系统崩溃,所有主存内容丢失.,25,主存数据库优化,为减少空间开销,主存数据库可使用带有跨多页的指针的结构.在磁盘数据库中,跨越多页的I/O代价可能很高.数据存取之前不需要钉住内存中的缓冲页,因为缓冲页永远不会被替换.设计查询处理技术以极小化空间开销 查询计值过程中避免超出主存限制.改进操作的实现,如封锁与闩锁,使之不成为瓶颈.优化恢复算法

12、,因为页极少需要为了给别的页腾出空间而输出.,26,组提交,思想:不是一旦事务准备提交就把日志记录输出到稳定存储器,而是等到日志缓冲块满,或者事务在准备提交之后等了足够长的时间导致每个提交事务有较少输出操作,从而对应地有较高吞吐量.然而,提交被延迟直到足够大的一组事务准备提交,或者一个事务等待了足够长的时间 这导致响应时间稍微增加.上述延迟在高性能事务系统中是可接受的,因为日志缓冲块会很快填满.,27,实时事务系统,在具有实时约束的系统中,执行的正确性涉及数据库一致性和最后期限的满足.硬期限 在期限内若任务未完成可能发生严重问题固期限 如果在期限之后完成任务则没有价值软期限-如果在期限之后完成

13、则任务价值减少.磁盘读写操作的执行时间的巨大差别使得时间约束系统的事务管理问题复杂化因此常用主存数据库即使数据在主存中,等待封锁,事务中止,竞争资源仍然是问题实时系统的设计需要确保有足够的处理能力来满足期限,而不需要过多的硬件资源.,28,长事务,当需要用户交互时,传统并发控制技术不能很好起作用:长时间:设计,编辑会话时间很长暴露未提交数据:例如,设计的部分更新子任务:支持部分回滚可恢复性:崩溃时即使对尚未提交的数据也应该能恢复状态,这样用户工作不会丢失.性能:快的响应时间是基本要求,这样用户时间不会浪费.,29,长事务(续),表示为嵌套事务较低级别上的原子数据库操作(读/写).如果事务失败,

14、仅中止活跃的短事务.一旦短事务已经恢复,则活跃长事务即可继续.有效管理长时间的等待和可能的中止.需要等待与中止的替代方法;替代技术必须确保正确性而不要求可串行化.,30,并发控制,不要求可串行化的正确性:正确性依赖于对数据库的特定的一致性约束.正确性依赖于每个事务执行的操作的性质.对事务的底层操作做自动分析并检测其对数据库一致性约束的影响一般是不可能的.但存在更简单的技术:使用数据库一致性约束作为基础将数据库分割成子数据库,其上的并发可以分别管理.将read和 write之外的某些操作视为基本底层操作,并扩展并发控制以便处理它们.,31,并发控制(续),一个能够保持A+B之和不变的非冲突可串行

15、化调度,32,嵌套与多级事务,一个嵌套或多级事务T 表示为一个子事务集合T=t1,t2,.,tn 及T 上的一个偏序P.T 中子事务ti 可以中止而不强制T 中止.相反,T 可以要么重启ti,要么简单地选择不运行ti.若ti 提交,这个动作并不能使得ti 永久化(与Chapter 15中的情况不同).相反,ti 向T 提交,若T 中止它仍可能中止(或者需要补偿操作).T 的执行不能破坏偏序P,即,如果边ti tj 出现在优先图中,则tj ti 不能出现在P 的传递闭包中.,33,嵌套与多级事务(续),子事务本身可以是嵌套/多级事务.嵌套的最低层:标准read和write操作.嵌套可建立较高层操

16、作从而加强并发性.嵌套/多级事务的类型:多级事务:允许T 的子事务结束时释放锁.Saga(长篇叙述):多级长事务.嵌套事务:T 的子事务ti 持有的锁在ti 结束时自动给予T.,34,嵌套例,利用执行增加与减少操作的子事务Ta 和Tb 来重写事务T1:T1 包括 T1,1,从A 减去50T1,2,向B 增加50利用执行增加与减少操作的子事务Tc 和Td 来重写事务T2:T2 包括T2,1,从B 减去10T2,2,向A 增加10对上述子事务没有说明次序;任何执行都产生正确结果.,35,补偿事务,作为取消操作的另一种替代做法;补偿事务处理级联回滚问题.不是取消失败事务所做的所有更新,而是采取行动来

17、“补偿”失败.考虑一个代表旅行预订的长事务Ti,包括进行航空订票的子事务Ti,1,预订租车的Ti,2,预订旅馆房间的Ti,3.旅馆取消了预订.不是取消Ti 的所有工作,Ti 3 的失败可通过删除老的旅馆预订并进行一次新的预订来补偿.需要使用失败事务的语义.,36,实现问题,为使长事务度过系统崩溃,我们不但必须将对数据库的改变记入日志,还必须将与这些事务有关的内部系统数据的变化记入日志.将更新记入日志被物理大数据项(CAD 设计,文档正文)搞得更加复杂;不希望既存储旧值又存储新值.减少因确保大数据项的可恢复性而带来的开销有两种方法:操作记入日志.只有在数据项上执行的操作和数据项名称被存储在日志中

18、.记入日志与影子分页.对小数据项用日志;对大数据项用影子分页.只有被更新页需要存储在副本中.,37,多数据库系统中的事务管理,由于有自治性假设,在多数据库系统中事务管理更加复杂全局2PL 每个局部场地使用严格2PL(锁在结束时释放);作为全局事务的结果的封锁仅当该事务结束时才释放.保证全局可串行化由于自治性要求,场地间不能合作并执行一个公共的并发控制方案例如没有办法确保所有数据库遵循严格 2PL解决方法:提供很低级的并发执行,或者 使用较弱的一致性级别,38,事务管理,局部事务由每个局部DBMS执行,不受MDBS系统控制.全局事务在多数据库系统控制下执行.局部自治 局部DBMS间不能直接通信来

19、同步全局事务的执行,而多数据库系统对局部事务的执行也没有控制权.局部并发控制方案需要确保DBMS的调度是可串行化的在封锁情况下,DBMS必须能够防止局部死锁.需要另外的机制来确保全局可串行性,39,两级可串行性,DBMS确保局部局部事务间的可串行性,包括那些作为全局事务的一部分的事务.多数据库系统单独确保全局事务之间的可串行性 忽略局部事务导出的次序.2LSR 不能确保全局可串行性,然而它能满足强正确性的要求.1.保持由给定约束集合规定的一致性2.保证每个事务读取的数据项集合是一致的全局读协议:全局事务可以读但不能更新局部数据项;局部事务不能存取全局数据.在局部和全局数据项之间没有一致性约束.

20、,40,两级可串行性(续),局部读协议:局部事务对全局数据可以读取;不允许全局事务对局部数据的所有存取.如果事务在一个场地上向某数据项写入的值依赖于该事务在另一个场地上从某个数据项读取的值,则称该事务具有值依赖.对强正确性:任何事务都不能具有值依赖.全局读写/局部读协议:局部事务对全局数据可以读取;全局事务可以读写所有数据;在局部和全局数据项之间没有一致性约束.任何事务都不能具有值依赖.,41,全局可串行性,即使不能得到有关各种并发控制方案的结构的任何信息,也可以得到一个确保可串行性的非常有限制性的协议.事务图:节点是全局事务名和场地名.如果Ti 在场地Sk 上活跃,则存在无向边(Ti,Sk).如果事务图不含无向圈则可确保全局可串行性.,42,确保全局可串行性,每个场地Si 上有个特殊数据项,称为票(ticket)在场地Sk 上运行的每个事务Tj 必须写场地Si 上的票确保全局事务在每个场地都可串行化,不管局部并发控制方法是什么,只要该方法保证了局部可串行性全局事务管理器通过控制票被存取的次序来决定全局事务的串行次序然而,上述协议导致全局事务间的低并发度.,Copyright:Silberschatz,Korth and Sudarshan,43,End of Chapter,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号