《数据库系统概论(第五版)ppt第11章课件.ppt》由会员分享,可在线阅读,更多相关《数据库系统概论(第五版)ppt第11章课件.ppt(111页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值xx大学信息学院大学信息学院数据库系统概论An Introduction to Database System第十一章第十一章 并发控制并发控制AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制并发控制v多用户数据库系统多用户数据库系统允许多个用户同时使用的数据库系统允许多
2、个用户同时使用的数据库系统n飞机定票数据库系统飞机定票数据库系统n银行数据库系统银行数据库系统n特点:在同一时刻并发运行的事务数可达数百上千个特点:在同一时刻并发运行的事务数可达数百上千个AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制(续)并发控制(续)v多事务执行方式多事务执行方式(1)事务串行执行)事务串行执行n每每个个时时刻刻只只有有一一个个事事务务运运行行,其其他他事事务务必须等到这个事务结束以后方能运行必须等到这个事务结束以后方能运行n不不
3、能能充充分分利利用用系系统统资资源源,发发挥挥数数据据库库共共享资源的特点享资源的特点T1T2T3事务的串行执行方式事务的串行执行方式AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制(续)并发控制(续)n在在单单处处理理机机系系统统中中,事事务务的的并并行行执执行行是是这这些些并并行行事事务务的的并并行行操操作作轮轮流流交交叉叉运行运行n单单处处理理机机系系统统中中的的并并行行事事务务并并没没有有真真正正地地并并行行运运行行,但但能能够够减减少少处处理
4、理机机的的空闲时间,提高系统的效率空闲时间,提高系统的效率(2)交叉并发方式()交叉并发方式(InterleavedConcurrency)AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制(续)并发控制(续)(3)同时并发方式()同时并发方式(simultaneousconcurrency)n多多处处理理机机系系统统中中,每每个个处处理理机机可可以以运运行行一一个个事事务务,多多个个处处理理机机可可以以同同时时运运行行多多个个事事务务,实实现现多多个个
5、事事务务真真正正的并行运行的并行运行n最理想的并发方式,但受制于硬件环境最理想的并发方式,但受制于硬件环境n更复杂的并发方式机制更复杂的并发方式机制v本本章章讨讨论论的的数数据据库库系系统统并并发发控控制制技技术术是是以以单单处处理理机机系系统统为为基础的基础的AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制(续)并发控制(续)v事务并发执行带来的问题事务并发执行带来的问题n会产生多个事务同时存取同一数据的情况会产生多个事务同时存取同一数据的情况n可可
6、能能会会存存取取和和存存储储不不正正确确的的数数据据,破破坏坏事事务务隔隔离离性性和和数据库的一致性数据库的一致性v数据库管理系统必须提供并发控制机制数据库管理系统必须提供并发控制机制v并并发发控控制制机机制制是是衡衡量量一一个个数数据据库库管管理理系系统统性性能能的的重要标志之一重要标志之一AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值第十一章第十一章并发控制并发控制11.1并发控制概述并发控制概述11.2封锁封锁11.3封锁协议封锁协议11.4活锁和死锁
7、活锁和死锁11.5并发调度的可串行性并发调度的可串行性11.6两段锁协议两段锁协议11.7封锁的粒度封锁的粒度*11.8其他并发控制机制其他并发控制机制11.9小结小结AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.1并发控制概述并发控制概述v事务是并发控制的基本单位事务是并发控制的基本单位v并发控制机制的任务并发控制机制的任务n对并发操作进行正确调度对并发操作进行正确调度n保证事务的隔离性保证事务的隔离性n保证数据库的一致性保证数据库的一致性AnInt
8、roductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值T1的修改被的修改被T2覆盖了!覆盖了!并发控制概述(续)并发控制概述(续)并发操作带来数据的不一致性实例并发操作带来数据的不一致性实例例例11.1飞机订票系统中的一个活动序列飞机订票系统中的一个活动序列甲售票点甲售票点(事务事务T1)读出某航班的机票余额读出某航班的机票余额A,设,设A=16;乙售票点乙售票点(事务事务T2)读出同一航班的机票余额读出同一航班的机票余额A,也为,也为16;甲售票点卖出一张机票,修改余额甲售
9、票点卖出一张机票,修改余额AA-1,所以,所以A为为15,把把A写回数据库;写回数据库;乙售票点也卖出一张机票,修改余额乙售票点也卖出一张机票,修改余额AA-1,所以,所以A为为15,把,把A写回数据库写回数据库n结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少1AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制概述(续)并发控制概述(续)v这种情况称为数据库的不一致性,是由并发操作引起的。这种情况称为数据库的不一
10、致性,是由并发操作引起的。v在并发操作情况下,对在并发操作情况下,对T1、T2两个事务的操作序列的调度两个事务的操作序列的调度是随机的。是随机的。v若按上面的调度序列执行,若按上面的调度序列执行,T1事务的修改就被丢失。事务的修改就被丢失。n原因:第原因:第4步中步中T2事务修改事务修改A并写回后覆盖了并写回后覆盖了T1事务的事务的修改修改AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制概述(续)并发控制概述(续)v并发操作带来的数据不一致性并发操作带
11、来的数据不一致性1.丢失修改(丢失修改(LostUpdate)2.不可重复读(不可重复读(Non-repeatableRead)3.读读“脏脏”数据(数据(DirtyRead)v记号记号nR(x):读数据读数据xnW(x):写数据写数据xAnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值1.丢失修改丢失修改v两两个个事事务务T1和和T2读读入入同同一一数数据据并并修修改改,T2的的提提交交结果破坏了结果破坏了T1提交的结果,导致提交的结果,导致T1的修改被丢失。
12、的修改被丢失。v上面飞机订票例子就属此类上面飞机订票例子就属此类AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值丢失修改(续)丢失修改(续)T1T2 R(A)=16 R(A)=16 AA-1 W(A)=15 AA-1 W(A)=15丢失修改丢失修改AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值2.不可重复读不可重复读v不可重
13、复读是指事务不可重复读是指事务T1读取数据后,事务读取数据后,事务T2执行更新操作,使执行更新操作,使T1无法再现前一次读取结果。无法再现前一次读取结果。AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值不可重复读(续)不可重复读(续)v不可重复读包括三种情况:不可重复读包括三种情况:(1)事务)事务T1读取某一数据后,读取某一数据后,事务事务T2对其做了修对其做了修改改,当事务,当事务T1再次读该数据时,得到与前一次不再次读该数据时,得到与前一次不同的值同的值
14、AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值不可重复读(续)不可重复读(续)nT1读取读取B=100进行运算进行运算nT2读取同一数据读取同一数据B,对其进,对其进行修改后将行修改后将B=200写回数据写回数据库。库。nT1为了对读取值校对重读为了对读取值校对重读B,B已为已为200,与第一次读取,与第一次读取值不一致值不一致T1T2 R(A)=50 R(B)=100 求和求和=150R(B)=100BB*2W(B)=200 R(A)=50 R(B)=20
15、0 求和求和=250 (验验算不算不对对)不可重复读不可重复读 例如:例如:AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值不可重复读(续)不可重复读(续)(2)事务)事务T1按一定条件从数据库中读取了某些数据记录后,按一定条件从数据库中读取了某些数据记录后,事务事务T2删除了其中部分记录删除了其中部分记录,当,当T1再次按相同条件读取数再次按相同条件读取数据时,发现某些记录神秘地消失了。据时,发现某些记录神秘地消失了。(3)事务)事务T1按一定条件从数据库中
16、读取某些数据记录后,按一定条件从数据库中读取某些数据记录后,事事务务T2插入了一些记录插入了一些记录,当,当T1再次按相同条件读取数据时,再次按相同条件读取数据时,发现多了一些记录。发现多了一些记录。后两种不可重复读有时也称为后两种不可重复读有时也称为幻影幻影现象(现象(PhantomRow)AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值3.读读“脏脏”数据数据读读“脏脏”数据是指:数据是指:n事务事务T1修改某一数据,并将其写回磁盘修改某一数据,并将其写回
17、磁盘n事务事务T2读取同一数据后,读取同一数据后,T1由于某种原因被撤销由于某种原因被撤销n这这时时T1已已修修改改过过的的数数据据恢恢复复原原值值,T2读读到到的的数数据据就就与与数数据库中的数据不一致据库中的数据不一致nT2读到的数据就为读到的数据就为“脏脏”数据,即不正确的数据数据,即不正确的数据AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值读读“脏脏”数据(续)数据(续)T1T2 R(C)=100 CC*2W(C)=200R(C)=200 ROLLB
18、ACK C恢复恢复为为100例如例如读读“脏脏”数据数据 nT1将将C值修改为值修改为200,T2读到读到C为为200nT1由于某种原因撤销,其由于某种原因撤销,其修改作废,修改作废,C恢复原值恢复原值100n这时这时T2读到的读到的C为为200,与数据库内容不一致,就与数据库内容不一致,就是是“脏脏”数据数据 AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制概述(续)并发控制概述(续)v数据不一致性:由于数据不一致性:由于并发操作破坏了事务的隔离性并
19、发操作破坏了事务的隔离性v并发控制就是要用并发控制就是要用正确的方式调度并发操作正确的方式调度并发操作,使一个用户,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不事务的执行不受其他事务的干扰,从而避免造成数据的不一致性一致性v对数据库的应用有时允许某些不一致性,例如有些统计工对数据库的应用有时允许某些不一致性,例如有些统计工作涉及数据量很大,读到一些作涉及数据量很大,读到一些“脏脏”数据对统计精度没什数据对统计精度没什么影响,可以降低对一致性的要求以减少系统开销么影响,可以降低对一致性的要求以减少系统开销v参见爱课程网参见爱课程网11.1节动画节动画并发操作带来的数据不一致性并发
20、操作带来的数据不一致性AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值并发控制概述(续)并发控制概述(续)v并发控制的主要技术并发控制的主要技术n封锁封锁(Locking)n时间戳时间戳(Timestamp)n乐观控制法乐观控制法n多版本并发控制多版本并发控制(MVCC)AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值第十一章
21、第十一章并发控制并发控制11.1并发控制概述并发控制概述11.2封锁封锁11.3封锁协议封锁协议11.4活锁和死锁活锁和死锁11.5并发调度的可串行性并发调度的可串行性11.6两段锁协议两段锁协议11.7封锁的粒度封锁的粒度*11.8其他并发控制机制其他并发控制机制11.9小结小结AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.2封锁封锁v什么是封锁什么是封锁v基本封锁类型基本封锁类型v锁的相容矩阵锁的相容矩阵AnIntroductiontoDataba
22、seSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值什么是封锁什么是封锁v封锁就是事务封锁就是事务T在对某个数据对象(例如表、记录等)操在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁作之前,先向系统发出请求,对其加锁v加锁后事务加锁后事务T就对该数据对象有了一定的控制,在事务就对该数据对象有了一定的控制,在事务T释释放它的锁之前,其它的事务不能更新此数据对象。放它的锁之前,其它的事务不能更新此数据对象。v封锁是实现并发控制的一个非常重要的技术封锁是实现并发控制的一个非常重要的技术An
23、IntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值基本封锁类型基本封锁类型v一个事务对某个数据对象加锁后究竟拥有什么样一个事务对某个数据对象加锁后究竟拥有什么样的控制由封锁的类型决定。的控制由封锁的类型决定。v基本封锁类型基本封锁类型n排它锁(排它锁(ExclusiveLocks,简记为,简记为X锁)锁)n共享锁(共享锁(ShareLocks,简记为,简记为S锁)锁)AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化
24、而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值排它锁排它锁v排它锁又称为写锁排它锁又称为写锁v若事务若事务T对数据对象对数据对象A加上加上X锁,则只允许锁,则只允许T读取和读取和修改修改A,其它任何事务都不能再对,其它任何事务都不能再对A加任何类型的加任何类型的锁,直到锁,直到T释放释放A上的锁上的锁v保证其他事务在保证其他事务在T释放释放A上的锁之前不能再读取和上的锁之前不能再读取和修改修改AAnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就
25、是原有资金的时间价值共享锁共享锁v共享锁又称为读锁共享锁又称为读锁v若事务若事务T对数据对象对数据对象A加上加上S锁,则事务锁,则事务T可以读可以读A但不能修改但不能修改A,其它事务只能再对,其它事务只能再对A加加S锁,而不锁,而不能加能加X锁,直到锁,直到T释放释放A上的上的S锁锁v保证其他事务可以读保证其他事务可以读A,但在,但在T释放释放A上的上的S锁之锁之前不能对前不能对A做任何修改做任何修改AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值锁的相容矩阵
26、锁的相容矩阵Y=Yes,相容的请求,相容的请求N=No,不相容的请求,不相容的请求T1XS_XNNYSNYY_YYYT2AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值第十一章第十一章并发控制并发控制11.1并发控制概述并发控制概述11.2封锁封锁11.3封锁协议封锁协议11.4活锁和死锁活锁和死锁11.5并发调度的可串行性并发调度的可串行性11.6两段锁协议两段锁协议11.7封锁的粒度封锁的粒度*11.8其他并发控制机制其他并发控制机制11.9小结小结AnI
27、ntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.3封锁协议封锁协议v什么是封锁协议什么是封锁协议n在运用在运用X锁和锁和S锁对数据对象加锁时,需要约定一些规锁对数据对象加锁时,需要约定一些规则,这些规则为封锁协议(则,这些规则为封锁协议(LockingProtocol)。)。l何时申请何时申请X锁或锁或S锁锁l持锁时间持锁时间l何时释放何时释放n对封锁方式规定不同的规则,就形成了各种不同的封对封锁方式规定不同的规则,就形成了各种不同的封锁协议,它们分别在不同的
28、程度上为并发操作的正确锁协议,它们分别在不同的程度上为并发操作的正确调度提供一定的保证。调度提供一定的保证。AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值保持数据一致性的常用封锁协议保持数据一致性的常用封锁协议v三级封锁协议三级封锁协议1.一级封锁协议一级封锁协议2.二级封锁协议二级封锁协议3.三级封锁协议三级封锁协议AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值
29、,其增值的这部分资金就是原有资金的时间价值1.一级封锁协议一级封锁协议v一级封锁协议一级封锁协议n事务事务T在修改数据在修改数据R之前必须先对其加之前必须先对其加X锁,直到事务锁,直到事务结束才释放。结束才释放。l正常结束(正常结束(COMMIT)l非正常结束(非正常结束(ROLLBACK)v一级封锁协议可防止丢失修改,并保证事务一级封锁协议可防止丢失修改,并保证事务T是可是可恢复的。恢复的。v在一级封锁协议中,如果仅仅是读数据不对其进在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,所以它不能保证可重行修改,是不需要加锁的,所以它不能保证可重复读和不读复读和不读“脏脏”数据。
30、数据。AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值使用封锁机制解决丢失修改问题使用封锁机制解决丢失修改问题T1T2 Xlock A R(A)=16Xlock A AA-1等待等待 W(A)=15等待等待 Commit等待等待 Unlock A等待等待获获得得Xlock AR(A)=15AA-1W(A)=14CommitUnlock A例:例:n事务事务T1在读在读A进行修改进行修改之前先对之前先对A加加X锁锁n当当T2再请求对再请求对A加加X锁时锁时被拒绝
31、被拒绝nT2只能等待只能等待T1释放释放A上上的锁后获得对的锁后获得对A的的X锁锁n这时这时T2读到的读到的A已经是已经是T1更新过的值更新过的值15nT2按此新的按此新的A值进行运值进行运算,并将结果值算,并将结果值A=14写写回到磁盘。避免了丢失回到磁盘。避免了丢失T1的更新。的更新。没有丢失修改没有丢失修改AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值2.二级封锁协议二级封锁协议v二级封锁协议二级封锁协议n一级封锁协议加上事务一级封锁协议加上事务T在读
32、取数据在读取数据R之前必须先对其之前必须先对其加加S锁,读完后即可释放锁,读完后即可释放S锁。锁。v二级封锁协议可以防止丢失修改和读二级封锁协议可以防止丢失修改和读“脏脏”数据。数据。v在二级封锁协议中,由于读完数据后即可释放在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。锁,所以它不能保证可重复读。AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值使用封锁机制解决读使用封锁机制解决读“脏脏”数据问题数据问题T1T2 Xlock C R(C
33、)=100 CC*2 W(C)=200Slock C等待等待ROLLBACK等待等待 (C恢复恢复为为100)等待等待 Unlock C等待等待获获得得Slock CR(C)=100Commit CUnlock C例例n事务事务T1在对在对C进行修改之前,进行修改之前,先对先对C加加X锁,修改其值后写锁,修改其值后写回磁盘回磁盘nT2请求在请求在C上加上加S锁,因锁,因T1已在已在C上加了上加了X锁,锁,T2只能等待只能等待nT1因某种原因被撤销,因某种原因被撤销,C恢复恢复为原值为原值100nT1释放释放C上的上的X锁后锁后T2获得获得C上上的的S锁,读锁,读C=100。避免了。避免了T2读
34、读“脏脏”数据数据不读不读“脏脏”数据数据 AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值3.三级封锁协议三级封锁协议v三级封锁协议三级封锁协议n一级封锁协议加上事务一级封锁协议加上事务T在读取数据在读取数据R之前必须先对其之前必须先对其加加S锁,直到事务结束才释放。锁,直到事务结束才释放。v三级封锁协议可防止丢失修改、读脏数据和不可三级封锁协议可防止丢失修改、读脏数据和不可重复读。重复读。AnIntroductiontoDatabaseSystem资金是运
35、动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值使用封锁机制解决不可重复读问题使用封锁机制解决不可重复读问题T1T2 Slock A Slock B R(A)=50 R(B)=100 求和求和=150 Xlock B等待等待 R(A)=50等待等待 R(B)=100等待等待 求和求和=150等待等待 Commit等待等待 Unlock A等待等待 Unlock B等待等待获获得得XlockBR(B)=100BB*2W(B)=200CommitUnlock Bn事务事务T1在读在读A,B之前,先对之前,先对A,B加加S锁锁n其他
36、事务只能再对其他事务只能再对A,B加加S锁,而锁,而不能加不能加X锁,即其他事务只能读锁,即其他事务只能读A,B,而不能修改,而不能修改n当当T2为修改为修改B而申请对而申请对B的的X锁时被锁时被拒绝只能等待拒绝只能等待T1释放释放B上的锁上的锁nT1为验算再读为验算再读A,B,这时读出的,这时读出的B仍是仍是100,求和结果仍为,求和结果仍为150,即可,即可重复读重复读nT1结束才释放结束才释放A,B上的上的S锁。锁。T2才才获得对获得对B的的X锁锁 可重复读可重复读AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,
37、随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值4封锁协议小结封锁协议小结v三级协议的主要区别三级协议的主要区别n什么操作需要申请封锁以及何时释放锁(即持锁时间)什么操作需要申请封锁以及何时释放锁(即持锁时间)v不同的封锁协议使事务达到的一致性级别不同不同的封锁协议使事务达到的一致性级别不同n封锁协议级别越高,一致性程度越高封锁协议级别越高,一致性程度越高X锁锁S锁锁一致性保证一致性保证操作结操作结束释放束释放事务结事务结束释放束释放操作结操作结束释放束释放事务结事务结束释放束释放不丢失不丢失修改修改不读不读“脏脏”数据数据可重复可重复读读一级封锁协议一级封锁协议二级封锁协议二级封
38、锁协议三级封锁协议三级封锁协议表表11.1 不同不同级别级别的封的封锁协议锁协议和一致性保和一致性保证证AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值第十一章第十一章并发控制并发控制11.1并发控制概述并发控制概述11.2封锁封锁11.3封锁协议封锁协议11.4活锁和死锁活锁和死锁11.5并发调度的可串行性并发调度的可串行性11.6两段锁协议两段锁协议11.7封锁的粒度封锁的粒度*11.8其他并发控制机制其他并发控制机制11.9小结小结AnIntroduct
39、iontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.4活锁和死锁活锁和死锁v封锁技术可以有效地解决并行操作的一致性问题,封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题但也带来一些新的问题n死锁死锁n活锁活锁AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.4.1活锁活锁11.4.2死锁死锁11.4活锁和死锁活锁和死锁AnIn
40、troductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.4.1活锁活锁v事务事务T1封锁了数据封锁了数据Rv事务事务T2又请求封锁又请求封锁R,于是,于是T2等待。等待。vT3也请求封锁也请求封锁R,当,当T1释放了释放了R上的封锁之后系统首先批上的封锁之后系统首先批准了准了T3的请求,的请求,T2仍然等待。仍然等待。vT4又请求封锁又请求封锁R,当,当T3释放了释放了R上的封锁之后系统又批准上的封锁之后系统又批准了了T4的请求的请求vT2有可能永远等待,这就是有可能永
41、远等待,这就是活锁活锁的情形的情形AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值活锁(续)活锁(续)(a)活活 锁锁T1T2T3T4LockRLockR等待等待LockR等待等待LockRUnlockR等待等待等待等待等待等待LockR等待等待等待等待等待等待等待等待Unlock等待等待等待等待LockR等待等待AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增
42、值的这部分资金就是原有资金的时间价值活锁(续)活锁(续)v避免活锁:避免活锁:采用先来先服务的策略采用先来先服务的策略n当多个事务请求封锁同一数据对象时当多个事务请求封锁同一数据对象时n按请求封锁的先后次序对这些事务排队按请求封锁的先后次序对这些事务排队n该该数数据据对对象象上上的的锁锁一一旦旦释释放放,首首先先批批准准申申请请队队列列中中第第一个事务获得锁一个事务获得锁AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.4.1活锁活锁11.4.2死锁死锁1
43、1.4活锁和死锁活锁和死锁AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值11.4.2死锁死锁v事务事务T1封锁了数据封锁了数据R1vT2封锁了数据封锁了数据R2vT1又请求封锁又请求封锁R2,因,因T2已封锁了已封锁了R2,于是,于是T1等待等待T2释放释放R2上的锁上的锁v接着接着T2又申请封锁又申请封锁R1,因,因T1已封锁了已封锁了R1,T2也只能等待也只能等待T1释放释放R1上的锁上的锁v这样这样T1在等待在等待T2,而,而T2又在等待又在等待T1,
44、T1和和T2两个事务永远两个事务永远不能结束,形成不能结束,形成死锁死锁AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值死锁(续)死锁(续)T1T2LockR1LockR2LockR2等待等待等待等待等待等待LockR1等待等待等待等待等待等待等待等待(b)死锁死锁AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值解决死锁的方法
45、解决死锁的方法两类方法两类方法1.死锁的预防死锁的预防2.死锁的诊断与解除死锁的诊断与解除AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值1.死锁的预防死锁的预防v产生死锁的原因是两个或多个事务都已封锁了一些数据对产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。从而出现死等待。v预防死锁的发生就是要破坏产生死锁的条件预防死锁的发生就是要破坏产生
46、死锁的条件AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值死锁的预防(续)死锁的预防(续)预防死锁的方法预防死锁的方法(1)一次封锁法)一次封锁法(2)顺序封锁法)顺序封锁法AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值(1)一次封锁法)一次封锁法v要求每个事务必须一次将所有要使用的数据全要求每个事务必须一次将所有要使用的数
47、据全部加锁,否则就不能继续执行部加锁,否则就不能继续执行v存在的问题存在的问题n降低系统并发度降低系统并发度AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值一次封锁法(续)一次封锁法(续)n难于事先精确确定封锁对象难于事先精确确定封锁对象l数据库中数据是不断变化的,原来不要求封锁的数数据库中数据是不断变化的,原来不要求封锁的数据,在执行过程中可能会变成封锁对象,所以很难据,在执行过程中可能会变成封锁对象,所以很难事先精确地确定每个事务所要封锁的数据对象事先精确
48、地确定每个事务所要封锁的数据对象。l解决方法:将事务在执行过程中可能要封锁的数据解决方法:将事务在执行过程中可能要封锁的数据对象全部加锁,这就对象全部加锁,这就进一步降低了并发度进一步降低了并发度。AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值(2)顺序封锁法)顺序封锁法v顺序封锁法是预先对数据对象规定一个封锁顺序,所有事顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。务都按这个顺序实行封锁。v顺序封锁法存在的问题顺序封锁法存在的问
49、题n维护成本维护成本数据库系统中封锁的数据对象极多,并且随数据的插入、删数据库系统中封锁的数据对象极多,并且随数据的插入、删除等操作而不断地变化,要维护这样的资源的封锁顺序非常除等操作而不断地变化,要维护这样的资源的封锁顺序非常困难,困难,成本很高成本很高。n难以实现难以实现事务的封锁请求可以随着事务的执行而动态地决定,很难事事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就先确定每一个事务要封锁哪些对象,因此也就很难按规定的很难按规定的顺序去施加封锁顺序去施加封锁AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值
50、是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值死锁的预防(续)死锁的预防(续)v结论结论n在操作系统中广为采用的预防死锁的策略并不太适合在操作系统中广为采用的预防死锁的策略并不太适合数据库的特点数据库的特点n数据库管理系统在解决死锁的问题上更普遍采用的是数据库管理系统在解决死锁的问题上更普遍采用的是诊断并解除死锁的方法诊断并解除死锁的方法AnIntroductiontoDatabaseSystem资金是运动的价值,资金的价值是随时间变化而变化的,是时间的函数,随时间的推移而增值,其增值的这部分资金就是原有资金的时间价值2.死锁的诊断与解除死锁的