分布式数据库中的并发控制.ppt

上传人:hwp****526 文档编号:84394763 上传时间:2023-04-05 格式:PPT 页数:34 大小:63.50KB
返回 下载 相关 举报
分布式数据库中的并发控制.ppt_第1页
第1页 / 共34页
分布式数据库中的并发控制.ppt_第2页
第2页 / 共34页
点击查看更多>>
资源描述

《分布式数据库中的并发控制.ppt》由会员分享,可在线阅读,更多相关《分布式数据库中的并发控制.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第五章第五章 分布式数据库中分布式数据库中的并发控制的并发控制5.1并发控制的概念和理论1.并发控制的概念在通常情况下数据库中总是有若干个事务在运行,这些事务可能并发地存取相同的数据,称为事务的并发操作。当数据库中有多个事务并发执行时,系统必须对并发事务之间的相互作用加以控制,这是通过称为并发控制机制来实现的。分布式并发控主要是解决多个分布式事务对数据并发执行的正确性另外,在分布式数据库中,允许数据被复制在多个站点上,当需要对数据执行更新操作时,也必须同时正确地更新它的所有副本。1).丢失更新问题对某个数据项处理上的先后会造成结果的不正确。2).不一致分析问题3).依赖于未提交更新的问题2.事

2、务可串行化理论的基本概念若干个事务并发执行的结果与按希望的顺序执行的结果相同时,称诸事务是可串行的1)分布式事务的一个调度2)串行调度3)可串行化调度3.分布式事务的可串行化理论1)事务2)冲突操作3)并发事务的一个调度4)串行调度5)一致性调度6)两个调度等价7)可串行化调度例5.14.分布式事务的可串行化调度1)使用优先图判别可串行化调度算法5.12)分布式数据库中可串行化理论的扩展例5.23)单副本可串行化4)读一个/写全部副本控制协议5.并发控制机制的常用方法及其分类1)使用协议或规则保证调度是可串行化的(如2PL)2)并发控制机制常用的方法及其分类:封锁方法时标排序的方法混合的方法5

3、.2分布式数据库系统并发控制的封锁技术1.基于封锁的并发控制方法概述:基本思想是事务访问数据项前要对该数据项封锁,如果已被其他事务锁定,就要等等,直到那个事务释放该锁为止.1)锁的粒度,类型和操作A.锁的粒度是指锁定数据项的范围 粒度会影响并发控制和恢复的性能 首先,数据项尺寸越大,允许的并发程度越低 另外,数据项尺寸越小,数据库中项的数理越多B.锁的类型共享锁S,排他锁XC.锁的操作READ_LOCK读封锁WRITE_LOCK写封锁UNLOCK解锁2).封锁准则和锁的转换A.封锁准则事务T在执行任何READ_ITEM操作之前,必须先执行READ_LOCK操作或WRITE_LOCK操作事务T在

4、执行任何WRITE_ITEM操作之前,必须先执行WRITE_LOCK操作如果事务在执行READ_LOCK操作,数据项必须没有加锁或者已经加了读锁,否则事务的这个操作不能执行如果事务执行WRITE_LOCKRK操作,数据项必须没有加锁,否则事务的这个操作不能执行事务执行WRITE_LOCKR操作和WRITE_ITEM操作之后,必须执行UNLOCK操作如果事务已经持有数据项上的一个读锁或者一个写锁,那么它不能再执行READ_LOCK操作.如果事务已经持有数据项上的一个读锁或者一个写锁,那么它不能再执行WRITE_LOCK操作如果事务已经没有持有数据项上的一个读锁或者一个写锁,那么它不能再执行unL

5、OCK操作B.锁的转换在特定条件下,一个已经在数据项上持有锁的事务,允许某种封锁状态转换成另外一种封锁状态.如,一个事务先执行了READ_LOCK操作,然后它可以通过执行WRITE_LOCK操作来升级该锁.3)基本封锁算法分布式比集中式更为复杂:数据的分布导致执行的分布,封锁消息将在整个网络上传输,其通信代价相当大;对多副本的数据,要实现同步更新,原则上就要锁定所有副本.常用的算法有:简单的分布式封锁方法:类似于集中式,数据更新时,要将同一数据的全部副本封锁,然后对其进行更新,更新完成后解除全部上述封锁.主站点封锁法:主站点封锁法模拟集中式,选定一个站点定义为“主站点”,负责系统全部封锁管理,

6、所有站点都有向这个主站点提出封锁和解锁请求,所有封锁和解锁信息都被传送到那个主站点管理和保存,然后由主站点去处理封锁事宜.主副本封锁法:这个方法不指定主站点,而对每个数据项指定一个主副本,不同数据项的主副本被放在不同的站点上快照方法:它是类似于视图一种导出关系,但又与视图不同.它是数据的暂时凝聚,是一种存储方式.2.两阶段封锁协议1)两阶段封锁协议保证调度的可串行化第一阶段是扩张或称成长阶段.在这个阶段中,事务只能获得新的数据项锁,而不能释放任何已持有的锁.第二阶段是收缩或称衰退阶段.在这个阶段中,事务只能释放已经持有的锁.遵守两阶段封锁协议的两个事务T1Read_lock(y);Read_i

7、tem(y);Write_lock(x);Unlock(y);Read_item(x);X:=x+yWrite_item(x);Unlock(x);T2Read_lock(x);Read_item(x);Write_lock(y);Unlock(x);Read_item(y);X:=x+yWrite_item(y);Unlock(y);2)基本的,保守的,严格的,严酷的两阶段封锁协议保守2PL和严格2PL:对于前者,事务必须在开始之前封锁它所需要的所有数据项,因此,一旦事务开始就处在收缩阶段;而对于后者,直到事务结束后才开始解锁,因此事务一直处于扩张阶段,直到结束.锁的使用会引起:死锁和饥饿3

8、.两阶段封锁协议的实现方法1)集中式两阶段锁协议的实现方法2)主副本两阶段锁协议的实现方法3)分布式两阶段锁协议的实现方法4.多粒度封锁与意向锁1)多粒度封锁2)意向锁是如果对一个节点加意向锁,则说明该节点的下层节点正在被封锁;对任一节点封锁的,必须先对它的上层节加意向锁.三种类型的意向锁:意向共享锁,意向排他锁,共享意向排他锁5.3分布式数据库系统中的死锁处理1.全局死锁与等待图1)活锁,死锁和全局死锁例,相互等待引起的全局死锁2)等待图例,等待图2.死锁的预防方法非占先权(排队在先者可能失去优先)法占先权(排队在先者绝对优先)法3.死锁的检测和解决方法1)死锁检测和解决的一般方法检测通过对

9、全局等待图中回路的形成进行研究来实现的.如果系统处于死锁状态,就必须撤销一些引起死锁的事务.2)分布式死锁检测和解决方法集中式层次式分布式:A由于每一站接收从其他站点传来的可能的死锁回路,因此向自己的局部WFG增加一些边.B在站点的LWFG中,被增加的用于表示本地事务正在等待其他站点事务的边,同用于表示远程事务正在等待本站点事务的边相连接,该节点称为外部节点.5.4分布式数据库系统并发控制的时标技术1.基于时标的并发控制方法1)基本概念与基于封锁的算法不同,基于时标的并发控制算法并不试图通过互斥来支持串行性,而是选择一个事先的串行次序执行事务.时标是用来唯一地识别每个事务并允许排序的标识符.2

10、)全局唯一时标的形成和调整如果全局唯一时标由本地计数器值和站点标识符构成,有两个站点,在每一站点设置一计数器,每当发生一个事务,计数器值加1,这解决了同一站点内事务的次序问题.2.基本时标法基本时标法使用下述规则:每个事务在本站点开始时赋予一个全局唯一时标;在事务结束之前,不对数据库进行物理更新;事务的每个读操作或写操作都具有该事务的时标;对于数据库中的每个数据X,记录对其进行操作和写操作的最大时标,分别记为RTM(X)和WTM(X);如果事务被重新启动,则被赋予新的时标.基本时标法的执行过程:设READ_TS是对数据X进行读操作的时标,如果READ_TSWTM(X),则拒绝该操作,并使发出该

11、操作的事务用新时标重新启动;否则执行该操作,且把RTM(X)置为 max(rtm(x),read_ts)设WRITE_TS是对数据进行写操作,如果WRITE_TSRTM(X)或TSTS(S),那么撤销并回滚T;否则创建X的一个新版本XJ,并且令READ-TS(XJ)=WRITE-TS(XJ)=TS(T)如果事务T发布一个READ-ITEM(X)操作,并且X的版本I具有所有版本中最高的WRITE-TS(XI),那么,把XI的值返回给事务T,并且将READ-TS(XI)的值置为TS(T)和当前READ-TS(XI)中较大的一个2.采用验证锁的多版本两阶段封锁在这种封锁模式中,每个数据项都有三种锁方

12、式:读、写和验证多版本2PL的思想是:当只有一个单独的事务T持有项X上的写锁时,允许其他事务T读该项X。这一点是通过给予每个项X两个版本实现的。5.6分布式数据库系统并发控制的落乐观方法基本思想:对于冲突操作不像悲观方法那样采取挂起或拒绝的方法,而是让一个事务执行直到完成。乐观方法基于如下假设:冲突的事务是少数(例如在查询为主的系统中只占5%还少),大多数事务是可以不受于扰地执行完毕。因此在事务执行过程中,事务都是先对欲操作的数据项的本地局部副本进行操作,执行完毕后再进行检验。当不曾发生冲突时,就把该本地局部副本全局化;若发生过冲突,则回退该事务并作为新事务而重新启动。在乐观方法中,改变了事务执行的三个阶段的顺序:读/计算阶段验证阶段写阶段

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁