《数据库系统及应用.ppt》由会员分享,可在线阅读,更多相关《数据库系统及应用.ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库系统及应用数据库系统及应用第第10章章 并发控制并发控制Chp.15&16 in textbook主讲人:余艳玮主讲人:余艳玮数据库系统及应用数据库系统及应用Databases protection数据库保护:数据库保护:排除和防止排除和防止各种对数据库的干扰破各种对数据库的干扰破坏,确保数据安全可靠,以及在数据库遭到破坏坏,确保数据安全可靠,以及在数据库遭到破坏后后尽快地恢复尽快地恢复数据库保护通过四个方面来实现数据库保护通过四个方面来实现数据库的恢复技术数据库的恢复技术 Chp.17Deal with failure并发控制技术并发控制技术 Chp.15&16Deal with da
2、ta sharing完整性控制技术完整性控制技术 not discussEnable constraints安全性控制技术安全性控制技术 not discussAuthorization and authentication 数据库系统及应用数据库系统及应用Concurrency ControlDB(consistencyconstraints)T1T2 Tn多个事务同时存取共享多个事务同时存取共享的数据库时,如何保证的数据库时,如何保证数据库的一致性?数据库的一致性?数据库系统及应用数据库系统及应用主要内容主要内容并发操作与并发问题并发操作与并发问题并发事务调度与可串性并发事务调度与可串性(
3、Scheduling and Serializability)锁与可串性实现锁与可串性实现(Locks)数据库系统及应用数据库系统及应用一、并发操作和并发问题一、并发操作和并发问题并发操作并发操作在多用户在多用户DBS中,如果多个用户同时对同一数据进行操中,如果多个用户同时对同一数据进行操作称为并发操作作称为并发操作并发操作使多个事务之间可能产生相互干扰,破坏事务并发操作使多个事务之间可能产生相互干扰,破坏事务的隔离性(的隔离性(Isolation)DBMS的并发控制子系统负责协调并发事务的执行,保的并发控制子系统负责协调并发事务的执行,保证数据库的一致性,避免产生不正确的数据证数据库的一致性
4、,避免产生不正确的数据并发操作通常会引起三类问题并发操作通常会引起三类问题丢失更新丢失更新脏读脏读不一致分析不一致分析数据库系统及应用数据库系统及应用1、丢失更新问题、丢失更新问题时间时间事务事务T1事务事务T2数据库中数据库中A的值的值110002Read(A,t)3Read(A,t)4t=t-1005t=t+1006Write(A,t)7Commit9008Write(A,t)9Commit1100数据库系统及应用数据库系统及应用A1000A:1000事务事务T1事务事务T2缓冲区缓冲区37A9009A11002A:10006A:9008A:1100基于延迟更新的事务执行示例基于延迟更新的
5、事务执行示例数据库服务器数据库服务器客户机客户机延迟更新延迟更新:事务:事务Commit后才将所有更新写入数据库后才将所有更新写入数据库数据库系统及应用数据库系统及应用A1000A:1000事务事务T1事务事务T2缓冲区缓冲区32A:1000基于立即更新的事务执行示例基于立即更新的事务执行示例数据库服务器数据库服务器客户机客户机立即更新立即更新:事务的每次更新操作立即将更新结果写入数据库:事务的每次更新操作立即将更新结果写入数据库6A:900A9008A:1100A1100数据库系统及应用数据库系统及应用2、脏读问题、脏读问题时间时间事务事务T1事务事务T2数据库中数据库中A的值的值11000
6、2Read(A,t)3t=t-1004Write(A,t)5Read(A,t)6Rollbackt=t+1009007Write(A,t)8Commit1000脏数据脏数据:未提交并且随后又被撤销的数据称为脏数据:未提交并且随后又被撤销的数据称为脏数据数据库系统及应用数据库系统及应用3、不一致分析问题、不一致分析问题时间时间事务事务T1事务事务T212Read(A,t)Read(B,t)3t=t-1004Read(A,v)5Write(A,t)6CommitSum=t+v7Commit不一致分析问题不一致分析问题:事务读了过时的数据:事务读了过时的数据数据库系统及应用数据库系统及应用4、问题如
7、何解决?、问题如何解决?一种方法:让所有事务一个一个地串行执一种方法:让所有事务一个一个地串行执行行一个事务在执行时其它事务只能等待一个事务在执行时其它事务只能等待不能充分利用系统资源,效率低下不能充分利用系统资源,效率低下为了充分发挥为了充分发挥DBMS共享数据的特点,应允共享数据的特点,应允许事务并发执行许事务并发执行但必须保证事务并发执行的正确性但必须保证事务并发执行的正确性必须用正确的方法调度执行事务的并发操作必须用正确的方法调度执行事务的并发操作数据库系统及应用数据库系统及应用二、调度二、调度(Schedule)T1:Read(A,t)T2:Read(A,s)t t+100s s2W
8、rite(A,t)Write(A,s)Read(B,t)Read(B,s)t t+100s s2Write(B,t)Write(B,s)Constraint:A=BExample数据库系统及应用数据库系统及应用二、调度二、调度(Schedule)T1T2ABRead(A,t);t t+1002525Write(A,t);12525Read(B,t);t t+100;Write(B,t);125125Read(A,s);s s 2;Write(A,s);250125 Read(B,s);s s 2;Write(B,s);250250Schedule A数据库系统及应用数据库系统及应用二、调度二、
9、调度(Schedule)T1T2ABRead(A,s);s s 2;2525Write(A,s);5025 Read(B,s);s s 2;Write(B,s);5050Read(A,t);t t+100Write(A,t);15050Read(B,t);t t+100;Write(B,t);150150Schedule B数据库系统及应用数据库系统及应用二、调度二、调度(Schedule)T1T2ABRead(A,t);t t+100 2525Write(A,t);12525Read(A,s);s s 2;Write(A,s);25025Read(B,t);t t+100;Write(B,t
10、);250125 Read(B,s);s s 2;Write(B,s);250250Schedule C数据库系统及应用数据库系统及应用二、调度二、调度(Schedule)T1T2ABRead(A,t);t t+100 2525Write(A,t);12525Read(A,s);s s 2;Write(A,s);25025 Read(B,s);s s 2;Write(B,s);25050Read(B,t);t t+100;Write(B,t);250150Schedule D数据库系统及应用数据库系统及应用二、调度二、调度(Schedule)T1T2ABRead(A,t);t t+100 25
11、25Write(A,t);12525Read(A,s);s s 1;Write(A,s);12525 Read(B,s);s s 1;Write(B,s);12525Read(B,t);t t+100;Write(B,t);125125Schedule D数据库系统及应用数据库系统及应用1、调度的定义、调度的定义调度调度多个事务的读写操作按时间排序的执行序列多个事务的读写操作按时间排序的执行序列T1:r1(A)w1(A)r1(B)w1(B)T2:r2(A)w2(A)r2(B)w2(B)Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)Note调度中每个事务的
12、读写操作保持原来顺序调度中每个事务的读写操作保持原来顺序事务调度时不考虑事务调度时不考虑数据库的初始状态数据库的初始状态(Initial state)事务的语义事务的语义(Transaction semantics)数据库系统及应用数据库系统及应用1、调度的定义、调度的定义多个事务的并发执行存在多种调度方式多个事务的并发执行存在多种调度方式Sa=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Example:Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)T1T2数据库系统及应用数据库系统及应用2、可串化调度、可串化调度(S
13、erializable Schedule)What is a correct schedule?Answer:a serializable schedule!串行调度串行调度(Serial schedule)各个事务之间没有任何操作交错执行,事务一各个事务之间没有任何操作交错执行,事务一个一个执行个一个执行S T1 T2 T3 TnSerialzable Schedule如果一个调度的结果与某一串行调度执行的结如果一个调度的结果与某一串行调度执行的结果等价,则称该调度是可串化调度,否则是不果等价,则称该调度是可串化调度,否则是不可串调度可串调度数据库系统及应用数据库系统及应用2、可串化调度、可
14、串化调度可串化调度的正确性可串化调度的正确性Correctness of DB:单个事务的执行保证单个事务的执行保证DB从一个一致性状态变化到另一个一致性状态从一个一致性状态变化到另一个一致性状态N个事务串行调度执行仍保证个事务串行调度执行仍保证 Correctness of DBtransactionsSchedulerSerializable schedule数据库系统及应用数据库系统及应用2、可串化调度、可串化调度Is a schedule a serializable one?We MUSTGet all results of serial schedules,n!See if the
15、 schedule is equivalent to some serial scheduleToo difficult to realizeOther approaches?冲突可串性冲突可串性数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性(conflict serializable)Conflicting actionsSayri(X):事务事务Ti的读的读X操作操作(Read(X,t)wi(X):事务事务Ti的写的写X操作操作(Write(X,t)冲突操作冲突操作r1(A)w2(A)w1(A)w2(A)r1(A)w2(A)涉及涉及同一个数据库元同一个数据库元素素,并且,并且至
16、少有一个至少有一个是是写写操作操作数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性(conflict serializable)Conflicting actions如果调度中一对连续操作是冲突的,则意味着如果调度中一对连续操作是冲突的,则意味着如果它们的执行顺序交换,则至少会改变其中如果它们的执行顺序交换,则至少会改变其中一个事务的最终执行结果一个事务的最终执行结果如果两个如果两个连续连续操作操作不冲突不冲突,则可以在调度中交,则可以在调度中交换顺序换顺序数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2
17、(B)w2(B)数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性Sc=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)Sc=r1(A)w1(A)r2(A)r1(B)w2(A)w1(B)r2(B)w2(B)Sc=r1(A)w1(A)r1(B)r2(A)w2(A)w1(B)r2(B)w2(B)Sc=r1(A)w1(A)r1(B)r2(A)w1(B)w2(A)r2(B)w2(B)Sc=r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)T1T2Schedule A数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性Sc=r1
18、(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)同一个事务的操作必须符合原来的顺序同一个事务的操作必须符合原来的顺序冲突操作冲突操作数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性T1T2ABRead(A,t);t t+100 2525Write(A,t);12525Read(A,s);s s 2;Write(A,s);25025Read(B,t);t t+100;Read(B,s);s s 2;Write(B,t);250125Write(B,s);25050Schedule C此步读入的此步读入的B为为25Sc=r1(A)w1(A)r2(A)w2(A)
19、r1(B)r2(B)w1(B)w2(B)数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性冲突等价冲突等价(conflict equivalent)S1,S2 are conflict equivalent schedules if S1 can be transformed into S2 by a series of swaps on non-conflicting actions.冲突可串性冲突可串性(conflict serializable)A schedule is conflict serializable if it is conflict equivalent to
20、some serial schedule.数据库系统及应用数据库系统及应用3、冲突可串性、冲突可串性定理定理如果一个调度满足冲突可串性,则该调度是可如果一个调度满足冲突可串性,则该调度是可串化调度串化调度Note仅为仅为充分充分条件条件视图可串性视图可串性 see 15.5 P413判断给定调度是否为可串化调度的另一方法判断给定调度是否为可串化调度的另一方法数据库系统及应用数据库系统及应用4、优先图、优先图(Precedence Graph)优先图用于优先图用于冲突可串性的判断冲突可串性的判断优先图结构优先图结构结点结点(Node):事务:事务有向边有向边(Arc):Ti Tj,满足,满足 T
21、i s Tj存在存在Ti中的操作中的操作A1和和Tj中的操作中的操作A2,满足,满足A1在在A2前,并且前,并且A1和和A2是冲突操作是冲突操作数据库系统及应用数据库系统及应用4、优先图、优先图ExampleS=r2(A)r1(B)w2(A)r3(A)w1(B)w3(A)r2(B)w2(B)T1T2T3数据库系统及应用数据库系统及应用4、优先图、优先图ExampleS=r2(A)r1(B)w2(A)r2(B)r3(A)w1(B)w3(A)w2(B)T1T2T3数据库系统及应用数据库系统及应用4、优先图、优先图优先图与冲突可串性优先图与冲突可串性给定一个调度给定一个调度S,构造,构造S的优先图的
22、优先图P(S),若若P(S)中无环,则中无环,则S满足满足冲突可串性冲突可串性证明:归纳法证明:归纳法,see“H.Molina et al.Database System Implementation”数据库系统及应用数据库系统及应用三、锁与可串性实现三、锁与可串性实现What is a correct schedule?a serializable schedule!How to get a serializable schedule?Using locks给定给定n个并发事务,确定一个可串化调度个并发事务,确定一个可串化调度数据库系统及应用数据库系统及应用1、锁简介、锁简介schedul
23、erT1 T2locktableTwo new actions:lock(exclusive):li(A)unlock:ui(A)数据库系统及应用数据库系统及应用1、锁简介、锁简介锁协议锁协议(protocol):使用锁的规则使用锁的规则Rule#1:Well-formed transactions Ti:li(A)pi(A)ui(A).Rule#2 Legal schedulerS=.li(A).ui(A).no lj(A)数据库系统及应用数据库系统及应用1、锁简介、锁简介S=r2(A)r1(B)w2(A)r2(B)w1(B)w2(B)S=l2(A)r2(A)l1(B)r1(B)w2(A)u
24、2(A)l2(B)r2(B)w1(B)u1(B)w2(B)u2(B)Well-formed but illegal数据库系统及应用数据库系统及应用2、两阶段锁、两阶段锁(2PL)Two Phase LockingTi=.li(A).ui(A).no unlocks no locks1.事务在对任何数据进行读写之前,事务在对任何数据进行读写之前,首先要获得该数据上的锁首先要获得该数据上的锁2.在释放一个锁之后,事务不再获在释放一个锁之后,事务不再获得任何锁得任何锁数据库系统及应用数据库系统及应用2、两阶段锁、两阶段锁(2PL)Get locks but not release locksRele
25、ase locks but not get locks数据库系统及应用数据库系统及应用2、两阶段锁、两阶段锁(2PL)两段式事务:遵守两段式事务:遵守2PL协议的事务协议的事务定理定理如果一个调度如果一个调度S中的中的所有事务所有事务都是都是两段式两段式事务,事务,则该调度是则该调度是可串化调度可串化调度 (充分条件充分条件)T1T2TnUsing2PLSerializable ScheduleS=r2(A)r1(B)w2(A)r2(B)w1(B)w2(B)S=l2(A)r2(A)l1(B)r1(B)w2(A)u2(A)l2(B)r2(B)w1(B)u1(B)w2(B)u2(B)数据库系统及应
26、用数据库系统及应用2、两阶段锁、两阶段锁(2PL)如果事务如果事务T只是读取只是读取X,也必须加锁,而且,也必须加锁,而且释放锁之前其它事务无法对释放锁之前其它事务无法对X操作,影响数操作,影响数据库的并发性据库的并发性解决方法解决方法引入不同的锁,满足不同的要求引入不同的锁,满足不同的要求S LockX Lock数据库系统及应用数据库系统及应用3、X LockExclusive Locks(X锁,也称写锁)锁,也称写锁)X锁:若事务锁:若事务T对数据对数据R加加X锁,那么其它事锁,那么其它事务务要等要等T释放释放X锁锁以后,才能获准对数据以后,才能获准对数据R进行封锁。只有获得进行封锁。只有
27、获得R上的上的X锁的事务,才锁的事务,才能对所封锁的数据进行能对所封锁的数据进行 修改修改。数据库系统及应用数据库系统及应用3、X LockX锁协议锁协议PX协议:协议:任何任何企图企图更新更新数据数据R的事务的事务Ti必须先必须先执行执行xLxLi i(R)操作,以取得操作,以取得X锁。如果未获得锁。如果未获得X锁,则事务进入等待状态,一直到获得锁,则事务进入等待状态,一直到获得X锁才锁才能继续执行。能继续执行。PXC协议:在协议:在PX协议基础上规定协议基础上规定“X锁必须保锁必须保留到事务结束(留到事务结束(Commit或或Abort)”数据库系统及应用数据库系统及应用3、X LockT
28、1T2ABRead(A,t);t t+100 2525Write(A,t);12525Read(A,s);s s 2;Write(A,s);25025Read(B,t);t t+100;Read(B,s);s s 2;Write(B,t);250125Write(B,s);25050ExampleUsing X lock for schedulesAn incorrect schedule数据库系统及应用数据库系统及应用3、X LockT1T2ABxL1(A)2525Read(A,t);t t+100 Write(A,t);12525U1(A)xL2(A)Read(A,s);s s 2;Wri
29、te(A,s);25025U2(A)xL1(B)Read(B,t);t t+100;xL2(B)waitwaitWrite(B,t);wait250125U1(B)waitRead(B,s);s s 2;Write(B,s);250250U2(B)数据库系统及应用数据库系统及应用3、X LockWhats the solution if using X lock in 2PL?数据库系统及应用数据库系统及应用3、X LockT1T2ABxL1(A)2525Read(A,t);t t+100 Write(A,t);12525xL1(B)xL2(A)Read(B,t);t t+100;waitWr
30、ite(B,t);waitU1(A)wait125125U1(B)Read(A,s);s s 2;Write(A,t)250125xL2(B)Read(B,s);s s 2;Write(B,s);250250U2(A)U2(B)X-lock-based 2PL数据库系统及应用数据库系统及应用3、X LockX锁提供了对事务的写操作的正确控制策略锁提供了对事务的写操作的正确控制策略但如果事务是只读事务,则没必要加但如果事务是只读事务,则没必要加X锁锁写写独占独占读读共享共享数据库系统及应用数据库系统及应用4、S LockShare Locks(S锁,也称读锁)锁,也称读锁)S锁:如果事务锁:如果
31、事务T对数据对数据R加了加了S锁锁,则,则其它其它事务对事务对R的的X锁锁请求请求不能成功不能成功,但对但对R的的S锁锁请求可以成功请求可以成功。这就保证了其它事务可以。这就保证了其它事务可以读取读取R但不能修改但不能修改R,直到事务直到事务T释放释放S锁。锁。数据库系统及应用数据库系统及应用4、S LockPS协议:协议:任何要读取任何要读取数据数据R的事务的事务Ti必须先必须先执行执行sLi(R)操作,以获得操作,以获得R上的上的S锁。如果锁。如果未获得未获得S锁,则事务进入等待状态,直到获锁,则事务进入等待状态,直到获得得S锁才能继续执行。当事务获得锁才能继续执行。当事务获得S锁后,锁后
32、,如果要对数据如果要对数据R进行修改,则必须在修改前进行修改,则必须在修改前把执行把执行Upgrade(R)操作,将操作,将S锁升级为锁升级为X锁锁。PSC协议:协议:在在PS协议的基础上,规定协议的基础上,规定S锁锁必须持续到事务的终点必须持续到事务的终点。数据库系统及应用数据库系统及应用4、S Lock1.事务在事务在读取读取数据数据R前前必须先获得必须先获得S锁锁2.事务在事务在更新更新数据数据R前前必须要获得必须要获得X锁锁。如。如果该事务已具有果该事务已具有R上的上的S锁,则必须将锁,则必须将S锁锁升级为升级为X锁锁3.如果事务对锁的请求因为与其它事务已具如果事务对锁的请求因为与其它
33、事务已具有的有的锁不相容锁不相容而被拒绝,则事务进入而被拒绝,则事务进入等待状态,直到其它事务释放锁。等待状态,直到其它事务释放锁。4.一旦释放一个锁,就不再请求任何锁一旦释放一个锁,就不再请求任何锁S/X-lock-based 2PL数据库系统及应用数据库系统及应用5、Compatibility of locksN:No,不相容的请求不相容的请求Y:Yes,相容的请求相容的请求如果两个锁如果两个锁不相容不相容,则后提出锁请求的事,则后提出锁请求的事务必须务必须等待等待YYY无无YYNS锁锁YNNX锁锁无无S锁锁X锁锁T1T2HoldsRequests数据库系统及应用数据库系统及应用Where
34、 we are?调度与可串性调度与可串性锁与可串性实现锁与可串性实现2PLS LockX LockMulti-granularity Lock 多粒度锁多粒度锁Intension Lock 意向锁意向锁Next数据库系统及应用数据库系统及应用6、Multi-Granularity LockLock Granularity指加锁的数据对象的大小指加锁的数据对象的大小可以是整个关系、块、元组、整个索引、索引项等可以是整个关系、块、元组、整个索引、索引项等锁粒度越细,并发度越高;锁粒度越粗,锁粒度越细,并发度越高;锁粒度越粗,并发度越低并发度越低数据库系统及应用数据库系统及应用6、Multi-Gra
35、nularity Lock多粒度锁:同时支持多种不同的锁粒度多粒度锁:同时支持多种不同的锁粒度帐户关系帐户关系块块元组元组RB1B2B3t1t2t3Multi-Granularity Tree数据库系统及应用数据库系统及应用6、Multi-Granularity Lock多粒度锁协议多粒度锁协议允许多粒度树中的每个结点被允许多粒度树中的每个结点被独立地独立地加加S锁或锁或X锁锁对某个结点加锁对某个结点加锁意味着意味着其下层结点也被加了同其下层结点也被加了同类型的锁类型的锁数据库系统及应用数据库系统及应用6、Multi-Granularity LockWhy we need MGL?数据库系统及
36、应用数据库系统及应用6、Multi-Granularity LockT1:求当前数据库中所有帐户的余额之和求当前数据库中所有帐户的余额之和T2:增加一个新帐户增加一个新帐户(余额为余额为1000)Use tuple locks,suppose total two tuples in R T1 T2sL1(o1)sL1(o2)Read(o1,t1)Read(o2,t2)Write(o3)Sum=t1+t2U1(o1)U1(o2)并不是当前数据库的实际状态并不是当前数据库的实际状态数据库系统及应用数据库系统及应用6、Multi-Granularity Lock原因原因Lock只能针对只能针对已存在
37、的元组已存在的元组,对于开始时不存,对于开始时不存在后来被插入的元组无法在后来被插入的元组无法Locko3:Phantom tuple 幻像元组幻像元组存在,却看不到物理实体存在,却看不到物理实体SolutionT2插入插入o3的操作看成是整个关系的写操作,的操作看成是整个关系的写操作,对整个关系加锁对整个关系加锁Need MGL!数据库系统及应用数据库系统及应用6、Multi-Granularity Lock T1 T2sL1(o1)sL1(o2)Read(o1,t1)Read(o2,t2)xL2(R)Sum=t1+t2waitU1(o1)waitU1(o2)waitwrite(o3)Sol
38、ution:Using MGL数据库系统及应用数据库系统及应用6、Multi-Granularity Lock多粒度锁上的两种不同加锁方式多粒度锁上的两种不同加锁方式显式加锁显式加锁:应事务的请求直接加到数据对象上:应事务的请求直接加到数据对象上的锁的锁隐式加锁隐式加锁:本身没有被显式加锁,但因为其上:本身没有被显式加锁,但因为其上层结点加了锁而使数据对象被加锁层结点加了锁而使数据对象被加锁给一个结点显式加锁时必须考虑给一个结点显式加锁时必须考虑该结点是否已有不相容锁存在该结点是否已有不相容锁存在上层结点是否已有不相容的的锁(上层结点导致的上层结点是否已有不相容的的锁(上层结点导致的隐式锁冲突
39、)隐式锁冲突)所有下层结点中是否存在不相容的显式锁所有下层结点中是否存在不相容的显式锁数据库系统及应用数据库系统及应用6、Multi-Granularity Lock多粒度锁上的两种不同加锁方式多粒度锁上的两种不同加锁方式数据库数据库关系关系R1关系关系R2关系关系Rn元组元组t1元组元组tk元组元组t2元组元组tm元组元组t3元组元组tw事务事务T1对对R1加了加了S锁锁事务事务T4请求对请求对Rn加加X锁,等待锁,等待事务事务T3请求对元组请求对元组t1加加X锁,等待锁,等待事务事务T2对对t3加了加了X锁锁数据库系统及应用数据库系统及应用6、Multi-Granularity Lock在
40、对一个结点在对一个结点P请求锁时,必须请求锁时,必须判断该结点判断该结点上是否存在不相容的锁上是否存在不相容的锁有可能是有可能是P上的显式锁上的显式锁也有可能是也有可能是P的上层结点导致的隐式锁的上层结点导致的隐式锁还有可能是还有可能是P的下层结点中已存在的某个显式的下层结点中已存在的某个显式锁锁理论上要搜索上面全部的可能情况,才能理论上要搜索上面全部的可能情况,才能确定确定P上的锁请求能否成功上的锁请求能否成功显然是低效的显然是低效的引入意向锁引入意向锁(Intension Lock)解决这一问题解决这一问题数据库系统及应用数据库系统及应用7、Intension Lock关系关系块块元组元组
41、RB1B2B3t1t2t3数据库系统及应用数据库系统及应用7、Intension LockIS锁(锁(Intent Share Lock,意向共享锁,意向共享锁,意向读锁)意向读锁)IX锁(锁(Intent Exlusive Lock,意向排它锁,意向排它锁,意向写锁)意向写锁)数据库系统及应用数据库系统及应用7、Intension Lock如果对某个结点加如果对某个结点加IS(IX)锁,则说明事务要锁,则说明事务要对该结点的某个下层结点加对该结点的某个下层结点加S(X)锁;锁;对任一结点对任一结点P加加S(X)锁,必须先对从根结点锁,必须先对从根结点到到P的路径上的所有结点加的路径上的所有结
42、点加IS(IX)锁锁数据库系统及应用数据库系统及应用7、Intension Lock关系关系块块元组元组 RB1B2B3t1t2t3Want to exclusively lock t1IXIXX数据库系统及应用数据库系统及应用7、Intension LockISIXSS IXX ISIXSS IXX Compatibility Matrix同时持有同时持有S和和IX锁锁数据库系统及应用数据库系统及应用7、Intension Lock意向锁协议:意向锁协议:事务在获得某个事务在获得某个结点上的结点上的S锁锁之之前前必须首先获必须首先获得得上层结点的上层结点的IS锁或更强的锁锁或更强的锁事务在获
43、得某事务在获得某结点上的结点上的X锁锁之之前前必须首先获得必须首先获得包含包含上层结点上的上层结点上的IX锁或更强的锁锁或更强的锁锁强度:锁对其它锁的排斥性锁强度:锁对其它锁的排斥性SIXXIXSIS强强弱弱数据库系统及应用数据库系统及应用7、Intension Lock请求对结点请求对结点P加锁时加锁时如果要加的锁与该结点上所持有的最强的锁不如果要加的锁与该结点上所持有的最强的锁不相容,则:不能加锁相容,则:不能加锁否则可以加锁否则可以加锁从从根结点根结点开始往下加锁开始往下加锁结点的组模式:结点的组模式:Group Mode数据库系统及应用数据库系统及应用8、Lock ManagerTiR
44、ead(A),Write(B).Commit L(A),Read(A),L(B),Write(B)Read(A),Write(B)Scheduler,part IScheduler,part IIDBlocktable插入锁,或释放锁插入锁,或释放锁执行执行Lock和事务操作和事务操作数据库系统及应用数据库系统及应用8、Lock ManagerLock table ConceptuallyABC.Lock info for BLock info for CIf null,object is unlockedEvery possible object数据库系统及应用数据库系统及应用8、Lock
45、ManagerBut use hash table:AIf object not found in hash table,it is unlockedLock info for AA.H数据库系统及应用数据库系统及应用8、Lock ManagerLock info for A-example tran mode wait?next Next_TObject:AGroup mode:SWaiting:yesList:T1SnoT2XyesT3XyesTo other T3 recordsA 链接所有持有或等待链接所有持有或等待A上的锁的事务上的锁的事务链接链接T1所有锁记录所有锁记录数据库系统及应用数据库系统及应用四、其它并发控制方法四、其它并发控制方法时间戳时间戳 timestamp see 16.2 P426有效性确认有效性确认 Validation see 16.3 P428数据库系统及应用数据库系统及应用本章小结本章小结并发操作问题并发操作问题调度与可串性调度与可串性可串化调度可串化调度冲突可串性及判断冲突可串性及判断锁与可串性实现锁与可串性实现2PL多种锁模式:多种锁模式:X、S多粒度锁与意向锁多粒度锁与意向锁锁管理器实现锁管理器实现