Lecture13第十一章并发控制ppt课件

上传人:痛*** 文档编号:189715167 上传时间:2023-02-23 格式:PPT 页数:100 大小:1.33MB
收藏 版权申诉 举报 下载
Lecture13第十一章并发控制ppt课件_第1页
第1页 / 共100页
Lecture13第十一章并发控制ppt课件_第2页
第2页 / 共100页
Lecture13第十一章并发控制ppt课件_第3页
第3页 / 共100页
资源描述:

《Lecture13第十一章并发控制ppt课件》由会员分享,可在线阅读,更多相关《Lecture13第十一章并发控制ppt课件(100页珍藏版)》请在装配图网上搜索。

1、数据库原理数据库原理Principle of DatabasePrinciple of DatabaseLecture 13Lecture 13第十一章第十一章 并发控制并发控制问题的产生问题的产生v多用户数据库系统的存在v 允许多个用户同时运用的数据库系统v飞机定票数据库系统v银行数据库系统 v特点:在同一时辰并发运转的事务数可达数百个 问题的产生续问题的产生续v 不同的多事务执行方式 v (1)事务串行执行v 每个时辰只需一个事务运转,其他事务必需等到这个事务终了以后方能运转v 不能充分利用系统资源,发扬数据库共享资源的特点T1T2T3事务的串行执行方式问题的产生续问题的产生续(2)交叉并

2、发方式Interleaved Concurrency在单处置机系统中,事务的并行执行是这些并行事务的并行操作轮番交叉运转单处置机系统中的并行事务并没有真正地并行运转,但可以减少处置机的空闲时间,提高系统的效率问题的产生续问题的产生续事务的交叉并发执行方式问题的产生续问题的产生续(3)同时并发方式simultaneous concurrency多处置机系统中,每个处置机可以运转一个事务,多个处置机可以同时运转多个事务,实现多个事务真正的并行运转问题的产生续问题的产生续v事务并发执行带来的问题v会产生多个事务同时存取同一数据的情况 v能够会存取和存储不正确的数据,破坏事务一致性和数据库的一致性第十

3、一章第十一章 并发控制并发控制11.1 并发控制概述并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并发调度的可串行性并发调度的可串行性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结11.1 并发控制概述并发控制概述v并发控制机制的义务v对并发操作进展正确调度v保证事务的隔离性v保证数据库的一致性T1的修正被的修正被T2覆盖了!覆盖了!并发控制概述续并发控制概述续并发操作带来数据的不一致性实例并发操作带来数据的不一致性实例例例1飞机订票系统中的一个活动序列飞机订票系统中的一个活动序列 甲售票点甲售票点(甲事务甲事务)读出某航班的机票余额读出

4、某航班的机票余额A,设,设A=16;乙售票点乙售票点(乙事务乙事务)读出同一航班的机票余额读出同一航班的机票余额A,也为,也为16;甲售票点卖出一张机票,修正余额甲售票点卖出一张机票,修正余额AA-1,所以,所以A为为15,把把A写回数据库;写回数据库;乙售票点也卖出一张机票,修正余额乙售票点也卖出一张机票,修正余额AA-1,所以,所以A为为15,把把A写回数据库写回数据库 结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少1 并发控制概述续并发控制概述续v 这种情况称为数据库的不一致性,是由并发操作引起的。v 在并发操作情况下,对甲、乙两个事务的操作序列

5、的调度是随机的。v 假设按上面的调度序列执行,甲事务的修正就被丧失。v 缘由:第4步中乙事务修正A并写回后覆盖了甲事务的修正并发控制概述续并发控制概述续v并发操作带来的数据不一致性v丧失修正Lost Updatev不可反复读Non-repeatable Readv读“脏数据Dirty Readv记号vR(x):读数据xvW(x):写数据x 1.丧失修正丧失修正v两个事务T1和T2读入同一数据并修正,T2的提交结果破坏了T1提交的结果,导致T1的修正被丧失。v上面飞机订票例子就属此类 丧失修正续丧失修正续T1T2 R(A)=16R(A)=16 AA-1 W(A)=15WAA-1W(A)=15丧失

6、修正2.不可反复读不可反复读v不可反复读是指事务T1读取数据后,事务T2v 执行更新操作,使T1无法再现前一次读取结果。不可反复读续不可反复读续v不可反复读包括三种情况:v(1)事务T1读取某一数据后,事务T2对其做了修正,当事务T1再次读该数据时,得到与前一次不同的值 不可反复读续不可反复读续n T1读取B=100进展运算n T2读取同一数据B,对其进展修正后将B=200写回数据库。n T1为了对读取值校正重读B,B已为200,与第一次读取值不一致 T1T2 R(A)=50 R(B)=100求和=150R(B)=100BB*2(B)=200 R(A)=50R(B)=200和=250(验算不对

7、)不可反复读 例如:不可反复读续不可反复读续(2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按一样条件读取数据时,发现某些记录消逝了(3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按一样条件读取数据时,发现多了一些记录。后两种不可反复读有时也称为幻影景象Phantom Row3.读读“脏数据脏数据 读“脏数据是指:事务T1修正某一数据,并将其写回磁盘事务T2读取同一数据后,T1由于某种缘由被撤销这时T1已修正正的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏数据,即不正确的数据 读

8、读“脏数据续脏数据续T1T2 R(C)=100 CC*2 W(C)=200R(C)=200ROLLBACK C恢复为100例如例如读“脏数据 n T1将C值修正为200,T2读到C为200n T1由于某种缘由撤销,其修正作废,C恢复原值100n 这时T2读到的C为200,与数据库内容不一致,就是“脏数据 并发控制概述续并发控制概述续v数据不一致性:由于并发操作破坏了事务的隔离性v并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而防止呵斥数据的不一致性 并发控制概述续并发控制概述续v并发控制的主要技术v有封锁(Locking)v时间戳(Timestamp)v乐观

9、控制法v商用的DBMS普通都采用封锁方法 第十一章第十一章 并发控制并发控制11.1 并发控制概述并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并发调度的可串行性并发调度的可串行性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结11.2 封锁封锁v什么是封锁v根本封锁类型v锁的相容矩阵什么是封锁什么是封锁v封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出恳求,对其加锁v加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。根本封锁类型根本封锁类型v 一个事务对某个数据对象加锁后终究

10、拥有什么样的控制由封锁的类型决议。v 根本封锁类型v 排它锁Exclusive Locks,简记为X锁v 共享锁Share Locks,简记为S锁排它锁排它锁v排它锁又称为写锁v假设事务T对数据对象A加上X锁,那么只允许T读取和修正A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁v保证其他事务在T释放A上的锁之前不能再读取和修正A 共享锁共享锁v共享锁又称为读锁v假设事务T对数据对象A加上S锁,那么其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁v保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修正 锁的相容矩阵锁的相容矩阵Y=Yes,相容的恳求,相容的恳

11、求N=No,不相容的恳求,不相容的恳求 T TXS-XNNYSNYY-YYY锁的相容矩阵续锁的相容矩阵续在锁的相容矩阵中:最左边一列表示事务T1曾经获得的数据对象上的锁的类型,其中横线表示没有加锁。最上面一行表示另一事务T2对同一数据对象发出的封锁恳求。T2的封锁恳求能否被满足用矩阵中的Y和N表示Y表示事务T2的封锁要求与T1已持有的锁相容,封锁恳求可以满足N表示T2的封锁恳求与T1已持有的锁冲突,T2的恳求被回绝运用封锁机制处理丧失修正问题运用封锁机制处理丧失修正问题T1T2 Xlock A R(A)=16Xlock A AA-1等待 W(A)=15等待 Commit等待 Unlock A等

12、待获得Xlock AR(A)=15AA-1W(A)=14CommitUnlock A例:例:n 事务T1在读A进展修正之前先对A加X锁n 当T2再恳求对A加X锁时被回绝n T2只能等待T1释放A上的锁后T2获得对A的X锁n 这时T2读到的A曾经是T1更新过的值15n T2按此新的A值进展运算,并将结果值A=14送回到磁盘。防止了丧失T1的更新。没有丧失修正没有丧失修正运用封锁机制处理不可反复读问题运用封锁机制处理不可反复读问题T1T2 Slock ASlock BR(A)=50R(B)=100求和=150Xlock B等待等待 R(A)=50等待R(B)=100等待求和=150等待Commit

13、等待Unlock A等待Unlock B等待获得XlockBR(B)=100BB*2W(B)=200CommitUnlock Bn 事务T1在读A,B之前,先对A,B加S锁n 其他事务只能再对A,B加S锁,而不能加X锁,即其他事务只能读A,B,而不能修正n 当T2为修正B而恳求对B的X锁时被回绝只能等待T1释放B上的锁n T1为验算再读A,B,这时读出的B仍是100,求和结果仍为150,即可反复读n T1终了才释放A,B上的S锁。T2才获得对B的X锁 可反复读可反复读运用封锁机制处理读运用封锁机制处理读“脏数据问题脏数据问题T1T2 Xlock CR(C)=100CC*2W(C)=200Slo

14、ck C等待 ROLLBACK等待(C恢复为100)等待Unlock C等待获得Slock CR(C)=100Commit CUnlock C例例n 事务T1在对C进展修正之前,先对C加X锁,修正其值后写回磁盘n T2恳求在C上加S锁,因T1已在C上加了X锁,T2只能等待n T1因某种缘由被撤销,C恢复为原值100n T1释放C上的X锁后T2获得C上的S锁,读C=100。防止了T2读“脏数据不读不读“脏数据脏数据 第十一章第十一章 并发控制并发控制11.1 并发控制概述并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并发调度的可串行性并发调度的可串行性11.5 两段锁协议

15、两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结11.3 活锁和死锁活锁和死锁v封锁技术可以有效地处理并行操作的一致性问题,但也带来一些新的问题v死锁v活锁11.3.1 活锁活锁v 事务T1封锁了数据Rv 事务T2又恳求封锁R,于是T2等待。v T3也恳求封锁R,当T1释放了R上的封锁之后系统首先同意了T3的恳求,T2依然等待。v T4又恳求封锁R,当T3释放了R上的封锁之后系统又同意了T4的恳求v T2有能够永远等待,这就是活锁的情形 活锁续活锁续活活 锁锁活锁续活锁续v防止活锁:采用先来先效力的战略v当多个事务恳求封锁同一数据对象时v按恳求封锁的先后次序对这些事务排队v该数据对象

16、上的锁一旦释放,首先同意恳求队列中第一个事务获得锁11.3.2 死锁死锁v 事务T1封锁了数据R1v T2封锁了数据R2v T1又恳求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁v 接着T2又恳求封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁v 这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能终了,构成死锁 死锁续死锁续T1T2lock R1Lock R2Lock R2.等待等待Lock R1等待等待等待等待死 锁处理死锁的方法处理死锁的方法两类方法1.预防死锁2.死锁的诊断与解除1.死锁的预防死锁的预防v 产生死锁的缘由是两个或多个事务都已封

17、锁了一些数据对象,然后又都恳求对已为其他事务封锁的数据对象加锁,从而出现死等待。v 预防死锁的发生就是要破坏产生死锁的条件死锁的预防续死锁的预防续预防死锁的方法 一次封锁法 顺序封锁法(1)一次封锁法一次封锁法v要求每个事务必需一次将一切要运用的数据全部加锁,否那么就不能继续执行v存在的问题v降低系统并发度v难于事先准确确定封锁对象(2)顺序封锁法顺序封锁法v 顺序封锁法是预先对数据对象规定一个封锁顺序,一切事务都按这个顺序实行封锁。v 顺序封锁法存在的问题v 维护本钱v 数据库系统中封锁的数据对象极多,并且在不断地变化。v 难以实现:很难事先确定每一个事务要封锁哪些对象v 死锁的预防续死锁的

18、预防续v结论v在操作系统中广为采用的预防死锁的战略并不很适宜数据库的特点vDBMS在处理死锁的问题上更普遍采用的是诊断并解除死锁的方法2.死锁的诊断与解除死锁的诊断与解除v死锁的诊断v超时法v事务等待图法(1)超时法超时法v 假设一个事务的等待时间超越了规定的时限,就以为发生了死锁v 优点:实现简单v 缺陷v 有能够误判死锁v 时限假设设置得太长,死锁发生后不能及时发现(2)等待图法等待图法v 用事务等待图动态反映一切事务的等待情况v 事务等待图是一个有向图G=(T,U)v T为结点的集合,每个结点表示正运转的事务v U为边的集合,每条边表示事务等待的情况v 假设T1等待T2,那么T1,T2之

19、间划一条有向边,从T1指向T2等待图法续等待图法续 事务等待图n 图(a)中,事务T1等待T2,T2等待T1,产生了死锁n 图(b)中,事务T1等待T2,T2等待T3,T3等待T4,T4又等待T1,产生了死锁 n 图(b)中,事务T3能够还等待T2,在大回路中又有小的回路 等待图法续等待图法续v并发控制子系统周期性地比如每隔数秒生成事务等待图,检测事务。假设发现图中存在回路,那么表示系统中出现了死锁。死锁的诊断与解除续死锁的诊断与解除续v解除死锁v选择一个处置死锁代价最小的事务,将其吊销v释放此事务持有的一切的锁,使其它事务能继续运转下去第十一章第十一章 并发控制并发控制11.1 并发控制概述

20、并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并发调度的可串行性并发调度的可串行性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结11.4 并发调度的可串行性并发调度的可串行性vDBMS对并发事务不同的调度能够会产生不同的结果v什么样的调度是正确的?v11.4.1 可串行化调度可串行化调度v可串行化(Serializable)调度v多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果一样v可串行性(Serializability)v是并发事务正确调度的准那么v一个给定的并发调度,当且仅当它是可串行化的,才以为是正

21、确调度 可串行化调度续可串行化调度续例如今有两个事务,分别包含以下操作:事务T1:读B;A=B+1;写回A事务T2:读A;B=A+1;写回B现给出对这两个事务不同的调度战略 串行化调度串行化调度,正确的调度正确的调度T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3W(A)Unlock ASlock AX=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock B串行调度(a)n 假设A、B的初值均为2。n 按T1T2次序执行结果为A=3,B=4 n 串行调度战略,正确的调度 串行化调度串行化调度,正确的调度正确的调度T1T2Slock A

22、X=R(A)=2Unlock AXlock BB=X+1=3W(B)Unlock BSlock BY=R(B)=3Unlock BXlock AA=Y+1=4W(A)Unlock A串行调度(b)n 假设A、B的初值均为2。n T2T1次序执行结果为B=3,A=4 n 串行调度战略,正确的调度 不可串行化调度,错误的调度不可串行化调度,错误的调度T1T2Slock BY=R(B)=2Slock AX=R(A)=2Unlock BUnlock AXlock AA=Y+1=3W(A)Xlock BB=X+1=3W(B)Unlock AUnlock B不可串行化的调度 n 执行结果与(a)、(b)的

23、结果都不同n 是错误的调度 可串行化调度,正确的调度可串行化调度,正确的调度T1T2Slock BY=R(B)=2Unlock BXlock ASlock AA=Y+1=3等待W(A)等待Unlock A等待X=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock B可串行化的调度 n 执行结果与串行调度(a)的执行结果一样n 是正确的调度 11.4.2 冲突可串行化调度冲突可串行化调度v可串行化调度的充分条件v一个调度Sc在保证冲突操作的次序不变的情况下,经过交换两个事务不冲突操作的次序得到另一个调度Sc,假设Sc是串行的,称调度Sc为冲突可串行化的调度v一个调度是冲

24、突可串行化,一定是可串行化的调度冲突可串行化调度续冲突可串行化调度续冲突操作冲突操作冲突操作是指不同的事务对同一个数据的读写操作和写冲突操作是指不同的事务对同一个数据的读写操作和写写操作写操作Ri(x)与与Wj(x)/*事务事务Ti读读x,Tj写写x*/Wi(x)与与Wj(x)/*事务事务Ti写写x,Tj写写x*/其他操作是不冲突操作其他操作是不冲突操作不同事务的冲突操作和同一事务的两个操作不能交换不同事务的冲突操作和同一事务的两个操作不能交换(Swap)冲突可串行化调度续冲突可串行化调度续例今有调度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)把w2

25、(A)与r1(B)w1(B)交换,得到:r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)与r1(B)w1(B)交换:Sc2r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等价于一个串行调度T1,T2,Sc1冲突可串行化的调度冲突可串行化调度续冲突可串行化调度续v 冲突可串行化调度是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行化调度。v 例有3个事务v T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)v 调度L1=W1(Y)W1(X)W2(Y)W2(X)W3(X

26、)是一个串行调度。v 调度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不满足冲突可串行化。但是调度L2是可串行化的,由于L2执行的结果与调度L1一样,Y的值都等于T2的值,X的值都等于T3的值 第十一章第十一章 并发控制并发控制11.1 并发控制概述并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并发调度的可串行性并发调度的可串行性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结11.5 两段锁协议两段锁协议v 封锁协议v 运用封锁方法时,对数据对象加锁时需求商定一些规那么 v 何时恳求封锁v 持锁时间v 何时释放封锁等v 两段封

27、锁协议(Two-Phase Locking,简称2PL)是最常用的一种封锁协议,实际上证明运用两段封锁协议产生的是可串行化调度两段锁协议续两段锁协议续v两段锁协议v 指一切事务必需分两个阶段对数据项加锁和解锁 v在对任何数据进展读、写操作之前,事务首先要获得对该数据的封锁v 在释放一个封锁之后,事务不再恳求和获得任何其他封锁两段锁协议续两段锁协议续v“两段锁的含义v 事务分为两个阶段v 第一阶段是获得封锁,也称为扩展阶段v 事务可以恳求获得任何数据项上的任何类型的锁,但是不能释放任何锁 v 第二阶段是释放封锁,也称为收缩阶段v 事务可以释放任何数据项上的任何类型的锁,但是不能再恳求任何锁 两段

28、锁协议续两段锁协议续例事务Ti遵守两段锁协议,其封锁序列是:Slock A Slock B Xlock C Unlock B Unlock A Unlock C;|扩展阶段|收缩阶段|事务Tj不遵守两段锁协议,其封锁序列是:Slock A Unlock A Slock B Xlock C Unlock C Unlock B;两段锁协议续两段锁协议续事务T1事务T2Slock(A)R(A=260)Slock(C)R(C=300)Xlock(A)W(A=160)Xlock(C)W(C=250)Slock(A)Slock(B)等待R(B=1000)等待Xlock(B)等待W(B=1100)等待Unl

29、ock(A)等待R(A=160)Xlock(A)Unlock(B)W(A=210)Unlock(C)遵守两段锁协议的可串行化调度n 左图的调度是遵守两段锁协议的,因此一定是一个可串行化调度。两段锁协议续两段锁协议续v 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。v 假设并发事务都遵守两段锁协议,那么对这些事务的任何并发调度战略都是可串行化的v 假设并发事务的一个调度是可串行化的,不一定一切事务都符合两段锁协议 两段锁协议续两段锁协议续v两段锁协议与防止死锁的一次封锁法v一次封锁法要求每个事务必需一次将一切要运用的数据全部加锁,否那么就不能继续执行,因此一次封锁法遵守两段锁协议v

30、但是两段锁协议并不要求事务必需一次将一切要运用的数据全部加锁,因此遵守两段锁协议的事务能够发生死锁两段锁协议续两段锁协议续例 遵守两段锁协议的事务发生死锁T1Slock BR(B)=2 Xlock A等待等待等待等待T2 Slock AR(A)=2 Xlock A等待等待遵守两段锁协议的事务能够发生死锁 第十一章第十一章 并发控制并发控制11.1 并发控制概述并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并发调度的可串行性并发调度的可串行性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结封锁粒度封锁粒度v 封锁对象的大小称为封锁粒度(Gra

31、nularity)v 封锁的对象:逻辑单元,物理单元 v 例:在关系数据库中,封锁对象:v 逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等v 物理单元:页数据页或索引页、物理记录等选择封锁粒度原那么选择封锁粒度原那么v封锁粒度与系统的并发度和并发控制的开销亲密相关。v封锁的粒度越大,数据库所可以封锁的数据单元就越少,并发度就越小,系统开销也越小;v封锁的粒度越小,并发度较高,但系统开销也就越大选择封锁粒度的原那么续选择封锁粒度的原那么续例假设封锁粒度是数据页,事务T1需求修正元组L1,那么T1必需对包含L1的整个数据页A加锁。假设T1对A加锁后事务T2要修正A中元组L

32、2,那么T2被迫等待,直到T1释放A。假设封锁粒度是元组,那么T1和T2可以同时对L1和L2加锁,不需求相互等待,提高了系统的并行度。又如,事务T需求读取整个表,假设封锁粒度是元组,T必需对表中的每一个元组加锁,开销极大 选择封锁粒度的原那么续选择封锁粒度的原那么续v 多粒度封锁(Multiple Granularity Locking)v 在一个系统中同时支持多种封锁粒度供不同的事务选择v 选择封锁粒度v 同时思索封锁开销和并发度两个要素,适中选择封锁粒度v 需求处置多个关系的大量元组的用户事务:以数据库为封锁单位v 需求处置大量元组的用户事务:以关系为封锁单元v 只处置少量元组的用户事务:

33、以元组为封锁单位11.6.1 多粒度封锁多粒度封锁v多粒度树v以树形构造来表示多级封锁粒度v根结点是整个数据库,表示最大的数据粒度v叶结点表示最小的数据粒度v 多粒度封锁续多粒度封锁续例:三级粒度树。根结点为数据库,数据库的子结点为关系,关系的子结点为元组。数据库数据库关系关系Rn关系关系R1元组元组元组元组元组元组元组元组 三级粒度树三级粒度树多粒度封锁协议多粒度封锁协议v允许多粒度树中的每个结点被独立地加锁v对一个结点加锁意味着这个结点的一切后裔结点也被加以同样类型的锁v在多粒度封锁中一个数据对象能够以两种方式封锁:显式封锁和隐式封锁显式封锁和隐式封锁显式封锁和隐式封锁v显式封锁:直接加到

34、数据对象上的封锁v隐式封锁:该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象加上了锁v显式封锁和隐式封锁的效果是一样的显式封锁和隐式封锁续显式封锁和隐式封锁续v 系统检查封锁冲突时v 要检查显式封锁v 还要检查隐式封锁v 例如事务T要对关系R1加X锁v 系统必需搜索其上级结点数据库、关系R1v 还要搜索R1的下级结点,即R1中的每一个元组v 假设其中某一个数据对象曾经加了不相容锁,那么T必需等待 显式封锁和隐式封锁续显式封锁和隐式封锁续v 对某个数据对象加锁,系统要检查v 该数据对象v 有无显式封锁与之冲突v 一切上级结点v 检查身手务的显式封锁能否与该数据对象上的隐式封锁冲突:(由

35、上级结点已加的封锁呵斥的v 一切下级结点v 看上面的显式封锁能否与身手务的隐式封锁将加到下级结点的封锁冲突11.6.2 意向锁意向锁v引进意向锁intention lock目的v提高对某个数据对象加锁时系统的检查效率意向锁意向锁(续续)v 假设对一个结点加意向锁,那么阐明该结点的下层结点正在被加锁v 对任一结点加根本锁,必需先对它的上层结点加意向锁v 例如,对任一元组加锁时,必需先对它所在的数据库和关系加意向锁 常意图向锁常意图向锁v意向共享锁(Intent Share Lock,简称IS锁)v意向排它锁(Intent Exclusive Lock,简称IX锁)v共享意向排它锁(Share I

36、ntent Exclusive Lock,简称SIX锁)意向锁续意向锁续vIS锁v假设对一个数据对象加IS锁,表示它的后裔结点拟意向加S锁。v 例如:事务T1要对R1中某个元组加S锁,那么要首先对关系R1和数据库加IS锁 意向锁续意向锁续vIX锁v假设对一个数据对象加IX锁,表示它的后裔结点拟意向加X锁。v 例如:事务T1要对R1中某个元组加X锁,那么要首先对关 系R1和数据库加IX锁 意向锁续意向锁续vSIX锁v假设对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX。v 例:对某个表加SIX锁,那么表示该事务要读整个表所以要对该表加S锁,同时会更新个别元组所以要对该表加

37、IX锁。意向锁续意向锁续意向锁的相容矩阵意向锁的相容矩阵意向锁续意向锁续v锁的强度v锁的强度是指它对其他锁的排斥程度v一个事务在恳求封锁时以强锁替代弱锁是平安的,反之那么不然意向锁续意向锁续v 具有意向锁的多粒度封锁方法v 恳求封锁时应该按自上而下的次序进展v 释放封锁时那么应该按自下而上的次序进展v 例如:事务T1要对关系R1加S锁v 要首先对数据库加IS锁v 检查数据库和R1能否已加了不相容的锁(X或IX)v 不再需求搜索和检查R1中的元组能否加了不相容的锁(X锁)意向锁续意向锁续v具有意向锁的多粒度封锁方法v提高了系统的并发度v减少了加锁和解锁的开销v在实践的数据库管理系统产品中得到广泛

38、运用 第十一章第十一章 并发控制并发控制11.1 并发控制概述并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并发调度的可串行性并发调度的可串行性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结11.7 小结小结v 数据共享与数据一致性是一对矛盾v 数据库的价值在很大程度上取决于它所能提供的数据共享度v 数据共享在很大程度上取决于系统允许对数据并发操作的程度v 数据并发程度又取决于数据库中的并发控制机制v 数据的一致性也取决于并发控制的程度。施加的并发控制愈多,数据的一致性往往愈好小结续小结续v 数据库的并发控制以事务为单位v 数据库的并发控制通常运用封锁机制v 两类最常用的封锁小结续小结续v 并发控制机制调度并发事务操作能否正确的判别准那么是可串行性v 并发操作的正确性那么通常由两段锁协议来保证。v 两段锁协议是可串行化调度的充分条件,但不是必要条件小结续小结续v 对数据对象施加封锁,带来问题v 活锁:先来先效力v 死锁:v 预防方法v 一次封锁法v 顺序封锁法v 死锁的诊断与解除v 超时法v 等待图法 下课了。休憩一会儿。休憩一会儿。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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