分布式数据库中的并发控制.ppt
《分布式数据库中的并发控制.ppt》由会员分享,可在线阅读,更多相关《分布式数据库中的并发控制.ppt(110页珍藏版)》请在三一办公上搜索。
1、分布式数据库系统及其应用,并发控制的概念和理论分布式数据库系统并发控制的封锁技术分布式数据库系统中的死锁处理分布式数据库系统并发控制的时标技术分布式数据库系统并发控制的多版本技术分布式数据库系统并发控制的乐观方法,分布式数据库中的并发控制,第5章,通常,数据库总有若干个事务在运行,这些事务可能并发地存取相同的数据,称为事务的并发操作。当数据库中有多个事务并发执行时,系统必须对并发事务之间的相互作用加以控制,这是通过并发控制机制来实现的。并发控制就是负责正确协调并发事务的执行,保证这种并发的存取操作不至于破坏数据库的完整性和一致性,确保并发执行的多个事务能够正确地运行并获得正确的结果。分布式数据
2、库中的并发控制解决多个分布式事务对数据并发执行的正确性,保证数据库的完整性和一致性。比集中式并发控制更复杂。,集中式DB环境,T1T2Tn,DB(一致性约束),分布式DB环境,X,Y,Z,T1,T2,多处理器,并发执行,单处理器,非并发执行,UPDATE x,70,t6,FIND x,t2,200,t7,UPDATE x,t5,x:=x*2,t4,x:=x-30,t3,FIND x,t1,100,t0,更新事务T2,数据库中X的值,更新事务T1,时间,注:其中FIND表示从数据库中读值,UPDATE表示把值写回到数据库T1T2,结果140,T2T1,结果170,得到结果是200,显然是不对的,
3、T1在t7丢失更新操作。,并发控制问题之一:丢失更新,FIND x,t2,70,t5,UPDATE x,t4,x:=x-30,t3,FIND x,t1,100,t0,更新事务T2,数据库中A的值,更新事务T1,时间,注:在时间t5事务T2仍认为x的值是100,并发控制问题之二:不一致分析,100,t6,x:=x-10,t2,ROLLBACK,t5,FIND x,90,t4,UPDATE x,t3,FIND x,t1,100,t0,更新事务T2,数据库中A的值,更新事务T1,时间,注:事务T2依赖于事务T1的未完成更新,并发控制问题之三:依赖于未提交更新(读脏数据),事务Ti Ti=i,i 其中
4、:i:操作符集合:Ri(x),Wi(x)U Ai,Ci Ai,Ci 是最后的操作符,只能是其一i:(冲突)操作有序执行,Ri(x)i Wi(x)或 Wi(x)i Ri(x),操作符集 读Ri(x)和写Wi(x)动作序列冲突动作 R1(A)W2(A)W1(A)W2(A)R1(A)W2(A)一个调度事务的一个操作序列称为一个调度,一般用S表示比如,S:R1(x),R2(y),W2(y),R2(x),W1(x),W2(x),T1 T21(T1)a X 5(T2)c X2(T1)X a+100 6(T2)X 2c3(T1)b Y 7(T2)d Y4(T1)Y b+100 8(T2)Y 2d,先序关系,
5、例子已知:站点1有数据X,站点2有数据Y约束:X=Y,(X站点)(Y站点)1(T1)a X 2(T1)X a+100 5(T2)c X 3(T1)b Y6(T2)X 2c 4(T1)Y b+100 7(T2)d Y 8(T2)Y 2d 初值:X=Y=0,结果:X=Y=200,调度S1,事务内事务间,令T=T1,T2,Tn 是一组事务.T上的调度 S 是具有如下顺序关系T的偏序,即S=T,T:(1)T=Ti(2)T i(3)对于任意一组冲突操作 p,q S,存在 p q 或 q p关系,并发调度定义,i=1,N,N,i=1,调度一组事务的调度必须包含这些事务的所有操作调度中某个事务的操作顺序必须
6、保持与该事务原有的顺序相同串行调度 一个事务的第一个动作是在另一个事务的最后一个动作完成后开始.即调度中事务的各个操作不会交叉,每个事务相继执行.一致性调度调度可以使得数据库从一个一致性状态转变为另一个一致性状态,则称调度为一致性调度,调度等价S1与S2等价,也就是说,对于冲突操作,Oi Oj在S1中成立,同时 Oi Oj 在S2中也成立可串行化调度如果一个调度等价于某个串行调度,则该调度称为可串行化调度。也就是说,该调度可以通过一系列非冲突动作的交换操作使其成为串行调度,例子两个事务,定义如下:T1:Read(x)x=x+10Write(x)Read(y)y=y-15Write(y)comm
7、it,T2:Read(x)x=x-20Write(x)Read(y)y=y*2Write(y)commit,五种调度:S1=R1(x),x=x+10,W1(x),R1(y),y=y-15,W1(y),C1,R2(x),x=x-20,W2(x),R2(y),y=y*2,W2(y),C2S2=R1(x),x=x+10,W1(x),R2(x),x=x-20,W2(x),R1(y),y=y-15,W1(y),C1,R2(y),y=y*2,W2(y),C2S3=R1(x),x=x+10,W1(x),R2(x),x=x-20,W2(x),R2(y),y=y*2,W2(y),C2,R1(y),y=y-15,
8、W1(y),C1S4=R2(x),x=x-20,W2(x),R2(y),y=y*2,W2(y),C2,R1(x),x=x+10,W1(x),R1(y),y=y-15,W1(y),C1S5=R2(x),x=x-20,W2(x),R1(x),x=x+10,W1(x),R2(y),y=y*2,W2(y),C2,R1(y),y=y-15,W1(y),C1,如果将事务提交延迟到两个事务操作完成之后执行,有:调度S1和S4是串行调度调度S2和S1的冲突操作具有相同的顺序,因此是等价调度;S2是可串行化调度,也是一致性调度调度S3虽是一致调度,但是它不与S1或S4等价,所以S3不是可串行化调度调度S5和S4
9、等价,所以S5是一致调度,也是可串行化调度,有以下推论:一个可串行化调度必定与某个串行调度等价,且是一致性调度一致性调度不一定是可串行化调度同一事务集几个可串行化调度,他们的结果未必相同,优先图 P(S),调度 S 的优先图是一个有向图G(N,E),其中N:一组节点N=T1T2,Tn,Ti是S中的事务E:一组有向边E=e1,e2,en,Ti Tj 是图中的一条边,当且仅当 p Ti,q Tj 使得p,q 冲突,并且 p S q,测试调度S的可串行化,对于调度 S中的事务Ti,在图中创建一个节点Ti对于每一种这样的情形:如果S中的在Ti执行了W(X)操作后执行Tj的R(X)操作,那么在优先图中创
10、建一条边(TiTj)对于每一种这样的情形:如果S中的在Ti执行了R(X)操作后执行Tj的W(X)操作,那么在优先图中创建一条边(TiTj)对于每一种这样的情形:如果S中的在Ti执行了W(X)操作后执行Tj的W(X)操作,那么在优先图中创建一条边(TiTj)当且仅当优先图中没有闭环时,调度S是可串行化的,测试调度S的可串行化,优先图中存在环路,说明调度是不可串行化的,否则是可串行化的。环路是指有向图中每条边的起始节点(第一条边除外),都与前一条边的终止节点连接,而第一条边的起始节点于最后一条边的终止节点连接,即事务序列是以同一个节点作为开始和结束的调度S中事务Ti在事务Tj之前,与S等价的调度中
11、Ti也必须在Tj之前某项数据导致了调度中的一条边的生成,就把数据项标注到优先图中这条边的旁边如果调度S中不存在环路,那么就可能存在若干个与S等价的串行调度,存在环路,举例,考虑如下3个事务:T1:Read(x);Write(x);Commit;T2:Write(x);Write(y);Read(z);Commit;T3:Read(x);Read(y);Read(z);Commit;这3个事务的一个调度:S=W2(x),W2(y),R2(z),C2,R1(x),W1(x),C1,R3(x),R3(y),R3(z),C3 优先图:T2 T1 T3无环,S是串行调度。,另外一个调度S:S=W2(x)
12、,R1(x),W1(x),C1,R3(x),W2(y),R3(y),R2(z),C2,R3(z),C3 先序图:T2 T1 T3无环,是可串调度。,可串性理论扩展,可串性理论可以直接扩展到无重复副本的分布式数据库中。事务在每个站点上的执行调度称作局部调度如果数据库无重复副本的分布式数据库,并且每个局部调度都是可串行化调度,只要这些局部调度的顺序一致,则它们的并(全局调度)也是可串行化调度但是有副本的情况下,就比较复杂。可能局部调度是可串行化的,而全局调度不是可串行化的。,保证只产生可串行化调度的机制并发控制机制分类按分配模式(数据方式)完全复制的DB部分复制DB或分片的DB按网络类型(通信方式
13、)广播能力的星型网,环形网同步化原则建立在相互排斥地访问共享数据基础上的算法通过一些准则(协议)对事务进行排序的算法悲观并发控制法(事务是相互冲突的),乐观并发控制法(没有太多的事务相互冲突),并发控制算法的分类,封锁法事务的同步化是通过对数据库的片断或者数据项进行物理或逻辑封锁来实现的封锁对象的大小通常称为封锁粒度封锁方法的类型可以根据在哪里进行封锁来进一步细分封锁法分类集中式封锁方法一个站点被指定为主站点,存放对整个数据库的封锁表,并且负责对全系统事务进行封锁主副本封锁法:对主副本所在站点封锁分布式封锁法:网络中的站点共享锁的管理,基本思想和概念,基本思想事务访问数据项之前要对该数据项封锁
14、,如果已经被其他事务锁定,就要等待,直到那个事务释放该锁为止锁的粒度锁定数据项的范围数据项层次数据库记录中的一个字段值一条数据库记录一个磁盘块(页面)一个完整的文件整个数据库,基本思想和概念,粒度对并发控制的影响大多数DBMS缺省设置为记录锁或页面锁粒度小,并发度高,锁开销大数据项比较多,锁也多,解锁和封锁操作多,锁表存储空间大(如存储读写时间戳)粒度大,并发度低,锁开销小如果是磁盘块,封锁磁盘块中的一条记录B的事务T必须封锁整个磁盘块而另外一个事务S如果要封锁记录C,而C也在磁盘块中,由于磁盘块正在封锁中,S只能等待如果是封锁粒度是一条记录的话,就不用等待了,基本思想和概念,如何来确定粒度取
15、决于参与事务的类型如果参与事务都访问少量的记录,那么选择一个记录作为粒度较好如果参与事务都访问同一文件中大量的记录,则最好采用块或者文件作为粒度,锁的类型:共享锁:Share锁,S锁或者读锁排它锁:eXclusive锁,X锁,拒绝锁或写锁。更新锁:Update锁,U锁锁的选择:数据项既可以读也可以写.则要用X锁如果数据项只可以读.则要用 S锁.,基本思想和概念,锁的操作Read_lock(x):读锁Write_lock(x):写锁unlock(x):解锁数据项的状态read_locked:读锁Write_locked:写锁具体操作方法在系统锁表中记录关于锁的信息锁表中每条记录有四个字段:锁状态
16、是上面两种。没有被封锁的数据项,在系统表中没有记录,基本思想和概念,封锁准则:事务T在执行任何read_item(x)操作之前,必须先执行read_lock(x)或者write_lock(x)操作事务T在执行任何write_item(x)操作之前,必须先执行write_lock(x)操作如果事务T执行read_lock(x)操作,数据项x必须没有加锁或者已经加了读锁,否则事务T的这个操作不能进行如果事务T执行write_lock(x)操作,数据项x必须没有加锁,否则事务T的这个操作不能进行,封锁准则和锁的转换,封锁准则:事务T在完成所有read_item(x)和write_item(x)操作之
17、后,必须执行unlock(x)操作如果事务T已经持有数据项x上的一个读锁或者一个写锁,那么它不能再执行read_lock(x)操作如果事务T已经持有数据项x上的一个读锁或者一个写锁,那么它不能再执行write_lock(x)操作如果事务T没有持有数据项x上的一个读锁或者一个写锁,那么它不能执行unlock(x)操作,封锁准则和锁的转换,锁的转换特定条件下,一个已经在数据项x上持有锁的事务T,允许将某种封锁状态转换为另外一种封锁状态比如,一个事务先执行了read_lock(x)操作,然后他可以通过执行write_lock(x)操作来升级该锁同样,一个事务先执行了write_lock(x)操作,然
18、后他可以通过执行read_lock(x)操作来降级该锁,封锁准则和锁的转换,满足封锁规则不能保证产生串行化调度,简单的分布式封锁方法类似集中式,将同一数据的全部副本封锁,然后更新,之后解除全部封锁缺点是各站点间进行相当大的数据传输,如果有N个站点,就有:N个请求封锁的消息N个封锁授权的消息N个更新数据的消息N个更新执行了的消息N个解除封锁的消息,分布式数据库基本封锁算法,主站点封锁法定义一个站点为主站点,负责系统全部封锁管理所有站点都向主站点提出封锁和解锁请求,由它去处理缺点有:所有封锁请求都送往单个站点,容易由于超负荷造成“瓶颈”主站点故障会使系统瘫痪,封锁消息都在这里,制约了系统可用性和可
19、靠性,分布式数据库基本封锁算法,主副本封锁法不指定主站点,指定数据项的主副本事务对某个数据项进行操作时,先对其主副本进行封锁,再进行操作主副本封锁,意味着所有的副本都被封锁主副本按使用情况,尽量就近分布可减少站点的负荷,使得各站点比较均衡可减少传输量快照方法和上一章讲的类似,分布式数据库基本封锁算法,基本2PL协议,如果一个事务所有的封锁操作(读写)都在第一个解锁操作之前,那么它就遵守2PL协议事务的执行中Lock的管理分成两个阶段上升阶段(成长阶段):获取Lock阶段(只能获取锁)收缩阶段(衰退阶段):释放Lock阶段(只能解锁)封锁点是指事务获得了它所要求的所有锁,并且还没有开始释放任何锁
20、的时刻如果允许锁的转换,锁的升级必须在成长阶段进行,锁的降级必须在锁的衰退阶段进行。2PL可以保证事务执行的可串行性.,开始,加锁点,结束,事务执行过程,获得锁,释放锁,两阶段封锁协议,基本2PL协议实现的难点锁管理器必须要知道事务的锁点位置级联撤销(cascading aborts)如果事务在开始释放Lock后又Abort时,将引起级联撤销(cascading aborts)(其他访问这个数据项的事务也被撤销)保守2PL要求事务在开始执行之前就持有所有它要访问的数据项上的锁事务要预先声明它的读集和写集大多数2PL调度器实现的是严格2PL(S2PL)事务在提交或者撤销之前,绝对不释放任何一个写
21、锁事务结束时(提交或者撤销),同时释放所有的锁,严格2PL事务T在提交或撤销之前,不能释放任何一个锁(写锁或者读锁),因此它比严格2PL更容易实现保守2PL与严格2PL之间的区别前者,事务必须在开始之前封锁它所需要的所有数据项,因此,一旦事务开始就处在收缩阶段后者,直到事务结束(提交或者撤销)后才开始解锁,因此,事务一直处于扩张阶段,直到结束,开始,结束,事务执行阶段,获得锁,释放锁,严格2PL(Strict Two-phase Locking)协议,数据项使用,并发控制子系统可以负责产生读锁和写锁操作(以严格2PL协议为例)当事务T发出read_item(x)操作请求时,系统会代表T调用re
22、ad_lock(x)操作如果Lock(x)的状态是被另外一个事务T持有写锁,那么系统会把T放到数据项X的等待队列中;否则,系统同意read_lock(x)的请求,从而允许事务T执行read_item(x)操作另外一个方面,如果事务T发出write_item(x)操作请求时,系统会代表T调用write_lock(x)操作如果Lock(x)的状态是被另外一个事务T持有读锁或写锁,那么系统会把T放到数据项X的等待队列中;如果Lock(x)的状态是读锁,并且事务T本身就是持有x上的读锁的唯一事务,那么系统将该锁升级为写锁,并且允许T执行write_item(x)操作如果Lock(x)的状态是没有锁,那
23、么系统同意write_lock(x)的请求,进而允许事务T执行write_item(x)操作,集中式2PL的实现方法,2PL很容易扩展到分布式DBMS(无论复制或无复制DDB),其最简单的方法是选择一个站点(主站点)做Lock管理器,其他站点上的事务管理器都需要与该选出的站点Lock管理器通信,而不是与本站点Lock管理器通信.这就是集中式2PL方法,术语协调事务管理器(coordinating TM):事务原发站点数据处理器(data processor,DP):其他参与站点中心站点LM:主站点锁管理器,参与站点的数据处理器,协调 TM,中心站点 LM,加锁请求,允许加锁,操作,操作结束,释
24、放封锁,集中式2PL的通信结构,中心站点LM不需要向DP发送操作,集中式2PL的实现方法,主副本2PL的实现方法,是主站点2PL的直接扩展选择一组站点做Lock管理器每个Lock管理器管理一组数据(即每个数据选择一个站点作自己的Lock管理器)事务管理器根据Lock申请的数据对象分别向这些数据的LM发出锁申请必须先为每一个数据项确定一个主副本站点,然后再向那个站点上的封锁管理程序发送封锁或释放锁的请求,目录的思想为分布式INGRES版本提出的,每个站点上要有一个复杂的目录,特点每个站点都有LM无副本DDB上如同主副本2PL有冗余副本DDB上则使用ROWA控制协议与集中式相似,但有不同集中式中向
25、中心站点封锁管理程序发送的信息,在分布式中发送给所有参与站点的封锁管理程序另外不同之处在于操作并不通过协调者事务管理程序传到数据处理器,而是通过参与者的封锁管理程序参与者的数据处理器向协调者的事务管理程序发送“操作结束”信息另外一种方法,每个数据处理器执行自身解锁,并通知协调者事务管理程序的封锁管理程序,分布式2PL的实现方法,参与者 DPs,加锁请求,操作,分布式2PL的通信结构,协调者 TM,参与者 LMs,操作结束,释放锁,分布式2PL的实现方法,多粒度封锁封锁的粒度不是单一的一种粒度,而是有多种粒度可以定义多粒度树,根节点是整个数据库,叶节点表示最小的封锁粒度直接封锁事务对要进行读/写
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分布式 数据库 中的 并发 控制

链接地址:https://www.31ppt.com/p-5929687.html