欢迎来到天天文库
浏览记录
ID:59011740
大小:296.00 KB
页数:40页
时间:2020-09-26
《第十一章 并发控制ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十一章并发控制主要内容11.1并发控制概述11.2封锁11.3活锁和死锁11.4并发调度的可串行性11.5两段锁协议11.6封锁的粒度11.1并发控制概述多事务执行方式(1)事务串行执行(2)交叉并发方式(3)同时并发方式并发是指在单处理机上,利用分时方法实行多个事务同时做。事务并发执行带来的问题可能会存取和存储不正确的数据,破坏事务的隔离性和一致性DBMS必须提供并发控制机制DBMS的并发控制子系统保证事务的隔离性保证事务的一致性对并发操作进行正确调度并发操作带来的问题1---丢失更新时间更新事务T1数据库中A的值更新事务T2t0100t1R(A)t
2、2R(A)t3A:=A-1t4A:=A-1t5W(A)t699W(A)t799图在时间t7丢失了事务T1的更新时间更新事务T1数据库中A的值更新事务T2t0100t1R(A)t2t3t4t5COMMITt6图事务T1两次读取A的值,却得到了不同的结果R(A)200R(A)A:=A*2W(A)并发操作带来的问题2---不可重复读问题并发操作带来的问题3---读脏数据时间更新事务T1数据库中A的值读事务T2t0100t1R(A)t2A:=A-30t3W(A)t470R(A)t5ROLLBACKt6100图事务T2在时间t4读了未提交的A值(70)并发控制就是
3、用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。11.2封锁封锁是实现并发控制的一个主要技术。锁(Lock)是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,锁描述了该数据项的状态。两种封锁:-排他型(Exclusive)封锁(简称:X锁)-共享型(Share)封锁(简称:S锁)X锁(排它锁)排它锁又称为写锁若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。X锁的操作XlockA:表示事务对数据A加X锁,并读数据AunlockA:表示事
4、务要解除对数据A的X锁X锁PX协议:使用X锁的规则称为PX协议。任何企图更新记录R的事务必须先执行“XlockR”操作,以获得对R的X锁,才能读或写记录R;如果未获准X锁,那么这个事务进入等待队列,一直到获准X锁,事务才能继续做下去。PXC协议X锁的解除操作应该合并到事务的结束(COMMIT或ROLLBACK)操作中。引入此规则,PX协议成为PXC协议。S锁(共享锁)S锁定义若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A。其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。操作SlockA表示事务对数据A加S锁,并读数据。Unloc
5、kA表示事务要解除对数据A的S锁。允许并发的读,又称为‘读锁’封锁的相容矩阵注:①N=NO,不相容的请求Y=YES,相容的请求②X、S、-:分别表示X锁,S锁,无锁③如果两个封锁是不相容的,则后提出封锁的事务要等待。XS—XS—NNYNYYYYYT2T1例:使用X锁封锁解决数据丢失时间更新事务T1数据库中A的值更新事务T2t0100t1XlockAt2XlockAt3R(A)waitt4A:=A-1waitt5waitt6W(A)waitt7COMMIT99waitt8UnlockAwaitt9获得XlockAt10R(A)t11A:=A-1t1298W
6、(A)11.3活锁和死锁封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题。死锁活锁1.“活锁”T2XlockAT3XlockAT4XlockAAA已被封锁,不成功,等待A刚被释放,成功时间点A刚被释放,成功……T2永远等待活锁!解决方法:先来先服务系统可能使某个事务永远处于等待状态,得不到封锁的机会,这种现象称为“活锁”。2.“死锁”时间事务T1事务T2t0XlockAt1XlockBt2XlockBt3waitXlockAt4waitwait出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成了死锁。解决
7、死锁的方法两类方法1)预防死锁2)死锁的诊断与解除1)死锁的预防预防死锁的发生就是要破坏产生死锁的条件。预防死锁的方法一次封锁法顺序封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行一次封锁法存在的问题扩大封锁范围难于事先精确确定封锁对象顺序封锁法顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。顺序封锁法存在的问题维护成本高难于实现2)死锁的诊断与解除允许死锁发生解除死锁由DBMS的并发控制子系统定期检测系统中是否存在死锁一旦检测到死锁,就要设法解除“死锁的诊断”若事务等待图有环,则表示出现死锁T
8、1T2T3T4图事务的有环依赖图1)超时法2)等待图法图:结点表示正运行的事务。
此文档下载收益归作者所有