数据库原理第十一章并发控制学习教案.pptx
《数据库原理第十一章并发控制学习教案.pptx》由会员分享,可在线阅读,更多相关《数据库原理第十一章并发控制学习教案.pptx(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1数据库原理数据库原理(yunl)第十一章并发控制第十一章并发控制第一页,共100页。问题问题(wnt)的产生的产生n n多用户数据库系统的存在n n 允许多个用户同时使用的数据库系统n n飞机定票数据库系统n n银行数据库系统 n n特点:在同一时刻(shk)并发运行的事务数可达数百个 第1页/共100页第二页,共100页。问题问题(wnt)的产生(续)的产生(续)n n不同的多事务执行方式不同的多事务执行方式 n n (1)(1)事务串行执行事务串行执行n n每每个个时时刻刻只只有有一一个个事事务务运运行行,其其他他事事务务必必须须等到这个事务结束以后方能运行等到这个事务结束以后方能
2、运行n n不不能能充充分分利利用用系系统统资资源源,发发挥挥(fhu)(fhu)数数据据库库共享资源的特点共享资源的特点T1T2T3事务的串行执行(zhxng)方式第2页/共100页第三页,共100页。问题问题(wnt)的产生(续)的产生(续)(2)(2)交叉并发方式(交叉并发方式(Interleaved ConcurrencyInterleaved Concurrency)在单处理机系统中,事务的并行执行是这些并行事务的并行操作轮流交叉运行在单处理机系统中,事务的并行执行是这些并行事务的并行操作轮流交叉运行单单处处理理机机系系统统中中的的并并行行事事务务并并没没有有真真正正地地并并行行运运行
3、行,但但能能够够(nnggu)(nnggu)减减少少处处理理机机的的空空闲时间,提高系统的效率闲时间,提高系统的效率第3页/共100页第四页,共100页。问题问题(wnt)的产生(续)的产生(续)事务(shw)的交叉并发执行方式第4页/共100页第五页,共100页。问题问题(wnt)的产生(续)的产生(续)(3)同时并发方式(simultaneous concurrency)多处理机系统中,每个处理机可以运行一个事务(shw),多个处理机可以同时运行多个事务(shw),实现多个事务(shw)真正的并行运行第5页/共100页第六页,共100页。问题问题(wnt)的产生(续)的产生(续)n n事务
4、并发执行带来的问题n n会产生(chnshng)多个事务同时存取同一数据的情况 n n可能会存取和存储不正确的数据,破坏事务一致性和数据库的一致性第6页/共100页第七页,共100页。第十一章第十一章 并发并发(bngf)控制控制11.1 并发并发(bngf)控制概述控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并并发发(bngf)调调度度的的可可串串行行性性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结第7页/共100页第八页,共100页。11.1 并发控制并发控制(kngzh)概述概述n n并发控制机制的任务n n对并发操作进行正确(zh
5、ngqu)调度n n保证事务的隔离性n n保证数据库的一致性第8页/共100页第九页,共100页。T1T1的修改的修改的修改的修改(xig(xig i)i)被被被被T2T2覆盖了!覆盖了!覆盖了!覆盖了!并发控制(kngzh)概述(续)并发操作并发操作并发操作并发操作(cozu)(cozu)带来数据的不一致性实例带来数据的不一致性实例带来数据的不一致性实例带来数据的不一致性实例 例例例例11飞机订票系统中的一个活动序列飞机订票系统中的一个活动序列飞机订票系统中的一个活动序列飞机订票系统中的一个活动序列 甲售票点甲售票点甲售票点甲售票点(甲事务甲事务甲事务甲事务)读出某航班的机票余额读出某航班的
6、机票余额读出某航班的机票余额读出某航班的机票余额A A,设,设,设,设A=16A=16;乙售票点乙售票点乙售票点乙售票点(乙事务乙事务乙事务乙事务)读出同一航班的机票余额读出同一航班的机票余额读出同一航班的机票余额读出同一航班的机票余额A A,也为,也为,也为,也为1616;甲售票点卖出一张机票,修改余额甲售票点卖出一张机票,修改余额甲售票点卖出一张机票,修改余额甲售票点卖出一张机票,修改余额AA-1AA-1,所以,所以,所以,所以A A为为为为1515,把,把,把,把A A写回数写回数写回数写回数据库;据库;据库;据库;乙售票点也卖出一张机票,修改余额乙售票点也卖出一张机票,修改余额乙售票点
7、也卖出一张机票,修改余额乙售票点也卖出一张机票,修改余额AA-1AA-1,所以,所以,所以,所以A A为为为为1515,把,把,把,把A A写回写回写回写回数据库数据库数据库数据库 结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少结果明明卖出两张机票,数据库中机票余额只减少1 1 第9页/共100页第十页,共100页。并发控制并发控制(kngzh)概述(续)概述(续)n n这种情况称为数据库的不一致性,是由并发操作引起的。这种情况称为数据库的不一致性,是由并发操作引起的。n n在并发操作情况下,对甲、乙两个事务
8、的操作序列的调度是随机的。在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。n n若按上面的调度序列执行,甲事务的修改就被丢失若按上面的调度序列执行,甲事务的修改就被丢失(dis)(dis)。n n原因:第原因:第4 4步中乙事务修改步中乙事务修改A A并写回后覆盖了甲事务的修改并写回后覆盖了甲事务的修改第10页/共100页第十一页,共100页。并发并发(bngf)控制概述(续)控制概述(续)n n并发操作带来的数据不一致性并发操作带来的数据不一致性n n丢失修改丢失修改(xig(xig i)i)(Lost UpdateLost Update)n n不可重复读(不可重复读(Non-r
9、epeatable ReadNon-repeatable Read)n n读读“脏脏”数据(数据(Dirty ReadDirty Read)n n记号记号n nR(x):R(x):读数据读数据x xn nW(x):W(x):写数据写数据x x 第11页/共100页第十二页,共100页。1.丢失丢失(dis)修改修改n n两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。n n上面(shng min)飞机订票例子就属此类 第12页/共100页第十三页,共100页。丢失丢失(dis)修改(续)修改(续)T1T2 R(A)=16R(A)=16 AA-1
10、W(A)=15WAA-1W(A)=15丢失(dis)修改第13页/共100页第十四页,共100页。2.不可不可(bk)重复读重复读n n不可(bk)重复读是指事务T1读取数据后,事务T2n n 执行更新操作,使T1无法再现前一次读取结果。第14页/共100页第十五页,共100页。不可不可(bk)重复读(续)重复读(续)n n不可(bk)重复读包括三种情况:n n(1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值 第15页/共100页第十六页,共100页。不可不可(bk)重复读(续)重复读(续)n nT1T1读取读取B=100B=100进行进行(j
11、nxng)(jnxng)运算运算n nT2T2读取同一数据读取同一数据B B,对其进行,对其进行(jnxng)(jnxng)修改后将修改后将B=200B=200写回数据写回数据库。库。n nT1T1为了对读取值校对重读为了对读取值校对重读B B,B B已已为为200200,与第一次读取值不一致,与第一次读取值不一致 T1T2 R(A)=50 R(B)=100求和=150R(B)=100BB*2(B)=200 R(A)=50R(B)=200和=250(验算不对)不可(bk)重复读 例如:第16页/共100页第十七页,共100页。不可不可(bk)重复读(续)重复读(续)(2)(2)事务事务T1T1
12、按一定条件从数据库中读取了某些数据记录后,事按一定条件从数据库中读取了某些数据记录后,事务务T2T2删除了其中部分记录,当删除了其中部分记录,当T1T1再次按相同条件读取数再次按相同条件读取数据时,发现某些记录消失了据时,发现某些记录消失了 (3)(3)事务事务T1T1按一定条件从数据库中读取某些数据记录后,事务按一定条件从数据库中读取某些数据记录后,事务T2T2插入了一些插入了一些(yxi)(yxi)记录,当记录,当T1T1再次按相同条件读取数据再次按相同条件读取数据时,发现多了一些时,发现多了一些(yxi)(yxi)记录。记录。后两种不可重复读有时也称为幻影现象(后两种不可重复读有时也称为
13、幻影现象(Phantom RowPhantom Row)第17页/共100页第十八页,共100页。3.读读“脏脏”数据数据(shj)读“脏”数据是指:事务T1修改某一数据,并将其写回磁盘(c pn)事务T2读取同一数据后,T1由于某种原因被撤销这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据 第18页/共100页第十九页,共100页。读读“脏脏”数据数据(shj)(续)(续)T1T2 R(C)=100 CC*2 W(C)=200R(C)=200ROLLBACK C恢复为100例如(lr)读“脏”数据(shj)nT1将C值修改为2
14、00,T2读到C为200nT1由于某种原因撤销,其修改作废,C恢复原值100n这时T2读到的C为200,与数据库内容不一致,就是“脏”数据 第19页/共100页第二十页,共100页。并发控制并发控制(kngzh)概述(续)概述(续)n n数据不一致性:由于并发操作破坏了事务的隔离性n n并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免(bmin)造成数据的不一致性 第20页/共100页第二十一页,共100页。并发并发(bngf)控制概述(续)控制概述(续)n n并发(bngf)控制的主要技术n n有封锁(Locking)n n时间戳(Timestamp)
15、n n乐观控制法n n商用的DBMS一般都采用封锁方法 第21页/共100页第二十二页,共100页。第十一章第十一章 并发并发(bngf)控制控制11.1 并发控制概述并发控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并并发发调调度度(diod)的的可可串串行行性性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结第22页/共100页第二十三页,共100页。11.2 封锁封锁(fn su)n n什么是封锁n n基本封锁类型n n锁的相容(xin rn)矩阵第23页/共100页第二十四页,共100页。什么什么(shn me)是封锁是封锁n n封锁就
16、是事务T在对某个数据对象(duxing)(例如表、记录等)操作之前,先向系统发出请求,对其加锁n n加锁后事务T就对该数据对象(duxing)有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象(duxing)。第24页/共100页第二十五页,共100页。基本基本(jbn)封锁类型封锁类型n n一个事务一个事务(shw)(shw)对某个数据对象加锁后究竟拥有什么样的控制由封锁的类型决定。对某个数据对象加锁后究竟拥有什么样的控制由封锁的类型决定。n n基本封锁类型基本封锁类型n n排它锁(排它锁(Exclusive LocksExclusive Locks,简记为,简记为X X锁
17、)锁)n n共享锁(共享锁(Share LocksShare Locks,简记为,简记为S S锁)锁)第25页/共100页第二十六页,共100页。排它锁排它锁n n排它锁又称为写锁n n若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它(qt)任何事务都不能再对A加任何类型的锁,直到T释放A上的锁n n保证其他事务在T释放A上的锁之前不能再读取和修改A 第26页/共100页第二十七页,共100页。共享锁共享锁n n共享锁又称为读锁n n若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放(shfng)A上的S锁n n保证其他事务可以读A,但在T释放(shf
18、ng)A上的S锁之前不能对A做任何修改 第27页/共100页第二十八页,共100页。锁的相容锁的相容(xin rn)矩阵矩阵Y=Yes,相容的请求N=No,不相容的请求T1T2XS-XNNYSNYY-YYY第28页/共100页第二十九页,共100页。锁的相容锁的相容(xin rn)矩阵(续)矩阵(续)在锁的相容矩阵中:在锁的相容矩阵中:最左边最左边(zu(zu bian)bian)一列表示事务一列表示事务T1T1已经获得的数据对象上的锁的类型,其中横线已经获得的数据对象上的锁的类型,其中横线表示没有加锁。表示没有加锁。最上面一行表示另一事务最上面一行表示另一事务T2T2对同一数据对象发出的封锁
19、请求。对同一数据对象发出的封锁请求。T2T2的封锁请求能否被满足用矩阵中的的封锁请求能否被满足用矩阵中的Y Y和和NN表示表示Y Y表示事务表示事务T2T2的封锁要求与的封锁要求与T1T1已持有的锁相容,封锁请求可以满足已持有的锁相容,封锁请求可以满足NN表示表示T2T2的封锁请求与的封锁请求与T1T1已持有的锁冲突,已持有的锁冲突,T2T2的请求被拒绝的请求被拒绝第29页/共100页第三十页,共100页。使用封锁机制解决丢失使用封锁机制解决丢失(dis)修改问题修改问题T1T2 Xlock A R(A)=16Xlock A AA-1等待 W(A)=15等待 Commit等待 Unlock A
20、等待获得Xlock AR(A)=15AA-1W(A)=14CommitUnlock A例:n事务T1在读(zi d)A进行修改之前先对A加X锁n当T2再请求对A加X锁时被拒绝nT2只能等待T1释放A上的锁后T2获得对A的X锁n这时T2读到的A已经是T1更新过的值15nT2按此新的A值进行运算,并将结果值A=14送回到磁盘。避免了丢失T1的更新。没有丢失(dis)修改第30页/共100页第三十一页,共100页。使用封锁机制使用封锁机制(jzh)解决不可重复读问题解决不可重复读问题T1T2 Slock ASlock BR(A)=50R(B)=100求和=150Xlock B等待等待 R(A)=50
21、等待R(B)=100等待求和=150等待Commit等待Unlock A等待Unlock B等待获得XlockBR(B)=100BB*2W(B)=200CommitUnlock Bn事务T1在读(zi d)A,B之前,先对A,B加S锁n其他事务只能再对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锁 可重复(chngf)读第31页/共100页第三十二页,共100页。使用封锁机制使用封锁机制
22、(jzh)解决读解决读“脏脏”数据问题数据问题T1T2 Xlock CR(C)=100CC*2W(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恢复(huf)为原值100nT1释放C上的X锁后T2获得C上的S锁,读C=100。避免了T2读“脏”数据不读“脏”数据(shj)第32页/共100页第三十三页,共100页。第十一章第十一章 并
23、发并发(bngf)控制控制11.1 并发并发(bngf)控制概述控制概述11.2 封锁封锁11.3 活锁和死锁活锁和死锁11.4 并并发发(bngf)调调度度的的可可串串行行性性11.5 两段锁协议两段锁协议11.6 封锁的粒度封锁的粒度11.7 小结小结第33页/共100页第三十四页,共100页。11.3 活锁和死锁活锁和死锁n n封锁(fn su)技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题n n死锁n n活锁第34页/共100页第三十五页,共100页。活锁活锁n n事务事务T1T1封锁了数据封锁了数据R Rn n事务事务T2T2又请求又请求(q(q ngqi)ngqi)封
24、锁封锁R R,于是,于是T2T2等待。等待。n nT3T3也请求也请求(q(q ngqi)ngqi)封锁封锁R R,当,当T1T1释放了释放了R R上的封锁之后系统首先批准了上的封锁之后系统首先批准了T3T3的请求的请求(q(q ngqi)ngqi),T2T2仍然等待。仍然等待。n nT4T4又请求又请求(q(q ngqi)ngqi)封锁封锁R R,当,当T3T3释放了释放了R R上的封锁之后系统又批准了上的封锁之后系统又批准了T4T4的请求的请求(q(q ngqi)ngqi)n nT2T2有可能永远等待,这就是活锁的情形有可能永远等待,这就是活锁的情形 第35页/共100页第三十六页,共10
25、0页。活锁(续)活锁(续)活 锁第36页/共100页第三十七页,共100页。活锁(续)活锁(续)n n避免活锁:采用先来先服务的策略避免活锁:采用先来先服务的策略n n当多个事务请求封锁同一数据对象当多个事务请求封锁同一数据对象(duxing)(duxing)时时n n按请求封锁的先后次序对这些事务排队按请求封锁的先后次序对这些事务排队n n该该数数据据对对象象(duxing)(duxing)上上的的锁锁一一旦旦释释放放,首首先先批批准准申申请请队队列列中第一个事务获得锁中第一个事务获得锁第37页/共100页第三十八页,共100页。死锁死锁n n事务事务T1T1封锁了数据封锁了数据R1R1n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 第十一 并发 控制 学习 教案
限制150内