您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 分布式数据库中的并发控制
第五章分布式数据库中的并发控制5.1并发控制的概念和理论•1.并发控制的概念•在通常情况下数据库中总是有若干个事务在运行,这些事务可能并发地存取相同的数据,称为事务的并发操作。•当数据库中有多个事务并发执行时,系统必须对并发事务之间的相互作用加以控制,这是通过称为并发控制机制来实现的。•分布式并发控主要是解决多个分布式事务对数据并发执行的正确性•另外,在分布式数据库中,允许数据被复制在多个站点上,当需要对数据执行更新操作时,也必须同时正确地更新它的所有副本。•1).丢失更新问题•对某个数据项处理上的先后会造成结果的不正确。•2).不一致分析问题•3).依赖于未提交更新的问题2.事务可串行化理论的基本概念•若干个事务并发执行的结果与按希望的顺序执行的结果相同时,称诸事务是可串行的•1)分布式事务的一个调度•2)串行调度•3)可串行化调度3.分布式事务的可串行化理论•1)事务•2)冲突操作•3)并发事务的一个调度•4)串行调度•5)一致性调度•6)两个调度等价•7)可串行化调度•例5.14.分布式事务的可串行化调度•1)使用优先图判别可串行化调度•算法5.1•2)分布式数据库中可串行化理论的扩展•例5.2•3)单副本可串行化•4)读一个/写全部副本控制协议5.并发控制机制的常用方法及其分类•1)使用协议或规则保证调度是可串行化的(如2PL)•2)并发控制机制常用的方法及其分类:•封锁方法•时标排序的方法•混合的方法5.2分布式数据库系统并发控制的封锁技术•1.基于封锁的并发控制方法概述:•基本思想是事务访问数据项前要对该数据项封锁,如果已被其他事务锁定,就要等等,直到那个事务释放该锁为止.•1)锁的粒度,类型和操作•A.锁的粒度是指锁定数据项的范围•粒度会影响并发控制和恢复的性能•首先,数据项尺寸越大,允许的并发程度越低•另外,数据项尺寸越小,数据库中项的数理越多•B.锁的类型•共享锁S,排他锁X•C.锁的操作•READ_LOCK读封锁•WRITE_LOCK写封锁•UNLOCK解锁2).封锁准则和锁的转换•A.封锁准则•事务T在执行任何READ_ITEM操作之前,必须先执行READ_LOCK操作或WRITE_LOCK操作•事务T在执行任何WRITE_ITEM操作之前,必须先执行WRITE_LOCK操作•如果事务在执行READ_LOCK操作,数据项必须没有加锁或者已经加了读锁,否则事务的这个操作不能执行•如果事务执行WRITE_LOCKRK操作,数据项必须没有加锁,否则事务的这个操作不能执行•事务执行WRITE_LOCKR操作和WRITE_ITEM操作之后,必须执行UNLOCK操作•如果事务已经持有数据项上的一个读锁或者一个写锁,那么它不能再执行READ_LOCK操作.•如果事务已经持有数据项上的一个读锁或者一个写锁,那么它不能再执行WRITE_LOCK操作•如果事务已经没有持有数据项上的一个读锁或者一个写锁,那么它不能再执行unLOCK操作B.锁的转换•在特定条件下,一个已经在数据项上持有锁的事务,允许某种封锁状态转换成另外一种封锁状态.•如,一个事务先执行了READ_LOCK操作,然后它可以通过执行WRITE_LOCK操作来升级该锁.3)基本封锁算法•分布式比集中式更为复杂:数据的分布导致执行的分布,封锁消息将在整个网络上传输,其通信代价相当大;对多副本的数据,要实现同步更新,原则上就要锁定所有副本.•常用的算法有:•简单的分布式封锁方法:类似于集中式,数据更新时,要将同一数据的全部副本封锁,然后对其进行更新,更新完成后解除全部上述封锁.•主站点封锁法:主站点封锁法模拟集中式,选定一个站点定义为“主站点”,负责系统全部封锁管理,所有站点都有向这个主站点提出封锁和解锁请求,所有封锁和解锁信息都被传送到那个主站点管理和保存,然后由主站点去处理封锁事宜.•主副本封锁法:这个方法不指定主站点,而对每个数据项指定一个主副本,不同数据项的主副本被放在不同的站点上•快照方法:它是类似于视图一种导出关系,但又与视图不同.它是数据的暂时凝聚,是一种存储方式.2.两阶段封锁协议•1)两阶段封锁协议保证调度的可串行化•第一阶段是扩张或称成长阶段.在这个阶段中,事务只能获得新的数据项锁,而不能释放任何已持有的锁.•第二阶段是收缩或称衰退阶段.在这个阶段中,事务只能释放已经持有的锁.遵守两阶段封锁协议的两个事务•T1•Read_lock(y);•Read_item(y);•Write_lock(x);•Unlock(y);•Read_item(x);•X:=x+y•Write_item(x);•Unlock(x);•T2•Read_lock(x);•Read_item(x);•Write_lock(y);•Unlock(x);•Read_item(y);•X:=x+y•Write_item(y);•Unlock(y);2)基本的,保守的,严格的,严酷的两阶段封锁协议•保守2PL和严格2PL:对于前者,事务必须在开始之前封锁它所需要的所有数据项,因此,一旦事务开始就处在收缩阶段;而对于后者,直到事务结束后才开始解锁,因此事务一直处于扩张阶段,直到结束.•锁的使用会引起:死锁和饥饿3.两阶段封锁协议的实现方法•1)集中式两阶段锁协议的实现方法•2)主副本两阶段锁协议的实现方法•3)分布式两阶段锁协议的实现方法4.多粒度封锁与意向锁•1)多粒度封锁•2)意向锁•是如果对一个节点加意向锁,则说明该节点的下层节点正在被封锁;对任一节点封锁的,必须先对它的上层节加意向锁.•三种类型的意向锁:意向共享锁,意向排他锁,共享意向排他锁5.3分布式数据库系统中的死锁处理•1.全局死锁与等待图•1)活锁,死锁和全局死锁•例,相互等待引起的全局死锁•2)等待图•例,等待图2.死锁的预防方法•非占先权(排队在先者可能失去优先)法•占先权(排队在先者绝对优先)法3.死锁的检测和解决方法•1)死锁检测和解决的一般方法•检测通过对全局等待图中回路的形成进行研究来实现的.如果系统处于死锁状态,就必须撤销一些引起死锁的事务.•2)分布式死锁检测和解决方法•集中式•层次式•分布式:A由于每一站接收从其他站点传来的可能的死锁回路,因此向自己的局部WFG增加一些边.•B在站点的LWFG中,被增加的用于表示本地事务正在等待其他站点事务的边,同用于表示远程事务正在等待本站点事务的边相连接,该节点称为外部节点.5.4分布式数据库系统并发控制的时标技术•1.基于时标的并发控制方法•1)基本概念•与基于封锁的算法不同,基于时标的并发控制算法并不试图通过互斥来支持串行性,而是选择一个事先的串行次序执行事务.•时标是用来唯一地识别每个事务并允许排序的标识符.•本地计数器值,站点标识符•2)全局唯一时标的形成和调整•如果全局唯一时标由本地计数器值和站点标识符构成,有两个站点,在每一站点设置一计数器,每当发生一个事务,计数器值加1,这解决了同一站点内事务的次序问题.2.基本时标法基本时标法使用下述规则:•每个事务在本站点开始时赋予一个全局唯一时标;•在事务结束之前,不对数据库进行物理更新;•事务的每个读操作或写操作都具有该事务的时标;•对于数据库中的每个数据X,记录对其进行操作和写操作的最大时标,分别记为RTM(X)和WTM(X);•如果事务被重新启动,则被赋予新的时标.基本时标法的执行过程:•设READ_TS是对数据X进行读操作的时标,如果READ_TSWTM(X),则拒绝该操作,并使发出该操作的事务用新时标重新启动;否则执行该操作,且把RTM(X)置为max(rtm(x),read_ts)•设WRITE_TS是对数据进行写操作,如果WRITE_TSRTM(X)或TSWTM(X),则拒绝这个写操作,并使发出操作的事务用新时标重新启动.否则执行这个写操作,并把WTM(X)置max(wtm(x),write_ts)3.保守时标法1)保守时标法的规则:•每个事务只在一个站点执行,它不激活远程的程序,仅仅能向远程站发出读或写请求•每个站点必须按时标时间的顺序发送/写数据的请求,在传输中也不会改变这个顺序,以保证各站点能够按时标顺序接收来自不同站点的全部读/写请求.•每个站点都为其他各个站点发来的读/定操作开辟一个缓冲区,把接收到的读/写操作分别保存在相应的缓冲区.2)保守时标法的执行步骤•假定某个站点K上,其各个缓冲区队列都已不空,即每个站点都已向它至少发送了一个读和一个写操作,就停止接收,处理在缓冲区队列中的操作.3)存在问题和解决办法:•如果一个站点从不向某个别的站点发送操作的话,那么执行中的假定就不符合,操作就无法执行.•该方法要求网络上所有站点都连通,这在大型系统中难以做到.为避免不必要的通信,可对无实际读/写请求的每个站点,发送一个时标为很大的空操作.•该方法过分保守,一律按时标顺序执行R和W,其中包括了不会冲突的操作,也被缓冲起来同等处理.5.5分布式数据库系统并发控制的多版本技术•1.基于时间戳排序的多版本技术为了保证可串行性,可采用以下规则:•如果事务T发布一个WRITE-ITEM(X)操作,并且X的版本I具有所有版本中最高的WRITE-TS(XI),同时WRITE-TS(XI)≤TS(T)且READ-TS(XI)TS(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.采用验证锁的多版本两阶段封锁•在这种封锁模式中,每个数据项都有三种锁方式:读、写和验证•多版本2PL的思想是:当只有一个单独的事务T持有项X上的写锁时,允许其他事务T‘读该项X。这一点是通过给予每个项X两个版本实现的。5.6分布式数据库系统并发控制的落乐观方法•基本思想:对于冲突操作不像悲观方法那样采取挂起或拒绝的方法,而是让一个事务执行直到完成。•乐观方法基于如下假设:冲突的事务是少数(例如在查询为主的系统中只占5%还少),大多数事务是可以不受于扰地执行完毕。因此在事务执行过程中,事务都是先对欲操作的数据项的本地局部副本进行操作,执行完毕后再进行检验。当不曾发生冲突时,就把该本地局部副本全局化;若发生过冲突,则回退该事务并作为新事务而重新启动。在乐观方法中,改变了事务执行的三个阶段的顺序:•读/计算阶段•验证阶段•写阶段
本文标题:分布式数据库中的并发控制
链接地址:https://www.777doc.com/doc-3921004 .html