版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十一章第十一章 数据库并发控制数据库并发控制授课教师:王哲v 在多用户和网络环境下,数据库是一个共享资源,多个用户或运用程序同时对数据库的同一数据对象进展读写操作,这种景象称为对数据库的并发操作。显然并发操作可以充分利用系统资源,提高系统效率。v 虽然如此,但是假设对并发操作不进展控制会呵斥一些错误。v 飞机定票数据库系统v 银行数据库系统 v 特点:在同一时辰并发运转的事务数可达数百个; v对并发操作进展的控制称为并发控制。并发控制机制对并发操作进展的控制称为并发控制。并发控制机制是衡量一个是衡量一个DBMS的重要性能目的之一。的重要性能目的之一。v数据库的并发控制以事务为单位,通常运用封
2、锁技术数据库的并发控制以事务为单位,通常运用封锁技术实现并发控制。对数据对象施加封锁,会带来活锁和实现并发控制。对数据对象施加封锁,会带来活锁和死锁问题,并发控制机制必需提供适宜数据库特点的死锁问题,并发控制机制必需提供适宜数据库特点的处理方法。处理方法。本次课内容本次课内容第一部分第一部分并发控制概述并发控制概述封锁机制封锁机制活锁和死锁活锁和死锁一、并发控制概述一、并发控制概述v事务的ACID特性能够遭到破坏的缘由之一是多个事务对数据库的并发操作呵斥的。为保证事务的隔离性和数据库的一致性,DBMS必需提供并发控制机制;v并发控制机制的义务v对并发操作进展正确调度v保证事务的隔离性v保证数据
3、库的一致性1、不同的多事务执行方式、不同的多事务执行方式v(1)事务串行执行事务串行执行v每个时辰只需一个事务运转,其他事务必需等到这个每个时辰只需一个事务运转,其他事务必需等到这个事务终了以后方能运转;事务终了以后方能运转;v不能充分利用系统资源,发扬数据库共享资源的特点不能充分利用系统资源,发扬数据库共享资源的特点;v(2)交叉并发方式交叉并发方式Interleaved Concurrencyv在单处置机系统中,事务的并行执行是这些并行事务在单处置机系统中,事务的并行执行是这些并行事务的并行操作轮番交叉运转;的并行操作轮番交叉运转;v单处置机系统中的并行事务并没有真正地并行运转,单处置机系
4、统中的并行事务并没有真正地并行运转,但可以减少处置机的空闲时间,提高系统的效率;但可以减少处置机的空闲时间,提高系统的效率;T1T2T3事务的串行执行方式事务的交叉并发执行方式v(3)同时并发方式同时并发方式simultaneous concurrencyv多处置机系统中,每个处置机可以运转一个事务,多多处置机系统中,每个处置机可以运转一个事务,多个处置机可以同时运转多个事务,实现多个事务真正个处置机可以同时运转多个事务,实现多个事务真正的并行运转;的并行运转;v最理想的并发方式,但受制于硬件环境;最理想的并发方式,但受制于硬件环境;v本章讨论的并发控制技术以单处置机系统为根底;本章讨论的并发
5、控制技术以单处置机系统为根底;v事务并发执行带来的问题:事务并发执行带来的问题:v会产生多个事务同时存取同一数据的情况;会产生多个事务同时存取同一数据的情况; v假设对并发操作不加控制,就能够会存取和存储不正假设对并发操作不加控制,就能够会存取和存储不正确的数据,破坏事务一致性和数据库的一致性;确的数据,破坏事务一致性和数据库的一致性;2、并发操作能够产生的问题、并发操作能够产生的问题v并发操作不加以限制,会产生数据不一致性问题,这种问题共有三类:v1丧失修正Lost Updatev例1:假设某产品库存量为50,如今购入该产品100个,执行入库操作,库存量加100;用掉40个,执行出库操作,库
6、存量减40;分别用T1和T2表示入库和出库操作义务。v假设同时发生入库T1和出库T2操作,这就构成并发操作。T1读取库存后,T2也读取了同一个库存;T1修正库存,回写更新后的值;T2修正库存,也回写更新后的值。此时库存为T2回写的值,T1对库存的修正丧失。如表所示,T1和T2的并发操作执行发生了“丧失修正错误。v 发生丧失修正的过程 顺序顺序 任务任务操作操作库存量库存量 1T1读库存量 502T2读库存量503T1库存量=50+100 4T2库存量=50-40 5T1写库存量 1506T2写库存量 10例2:飞机订票系统中的一个活动序列 ; 甲售票点(甲事务)读出某航班的机票余额A,设A=1
7、6; 乙售票点(乙事务)读出同一航班的机票余额A,也为16; 甲售票点卖出一张机票,修正余额AA-1,所以A为15,把A写回数据库; 乙售票点也卖出一张机票,修正余额AA-1,所以A为15,把A写回数据库 结果明明卖出两张机票,数据库中机票余额只减少1 ;2读读“脏数据脏数据 dirty read当当T1和和T2并发执行时,在并发执行时,在T1对数据库更新的结果没有提交对数据库更新的结果没有提交之前,之前,T2运用了运用了T1的结果,而在的结果,而在T2操作之后操作之后T1又回滚,又回滚,这时引起的错误是这时引起的错误是T2读取了读取了T1的的“脏数据。脏数据。v发生读“脏数据的过程顺序 任务
8、操作库存量 1T1读库存量 502T1库存量=50+1003T1写库存量 1504T2读库存量1505T2库存量=150-406 6T1T1ROLLBACKROLLBACK7T2写库存量 103不可反复读不可反复读Non-repeatable Read当当T1读取数据读取数据A后,后,T2执行了对执行了对A的更新,当的更新,当T1再次读再次读取数据取数据A希望与第一次是一样的值时,得到的数希望与第一次是一样的值时,得到的数据与前一次不同,这时引起的错误称为据与前一次不同,这时引起的错误称为“不可反复读不可反复读。v发生“不可反复读的过程顺序 任务操作库存量A入库量B 1T1读A=50 5010
9、02T1读B=1003T1求和=50+100 4T2读B=100505T2执行B=B*46T2回写B=400504007T1读A=50508T1读B=400 4009T1求和=450(验算不对)v三类不可反复读:三类不可反复读:v事务事务1读取某一数据后:读取某一数据后:v1. 事务事务2对其做了修正,当事务对其做了修正,当事务1再次读该数据时,再次读该数据时,得到与前一次不同的值。得到与前一次不同的值。v2. 事务事务2删除了其中部分记录,当事务删除了其中部分记录,当事务1再次读取数再次读取数据时,发现某些记录神密地消逝了。据时,发现某些记录神密地消逝了。v3. 事务事务2插入了一些记录,当
10、事务插入了一些记录,当事务1再次按一样条件再次按一样条件读取数据时,发现多了一些记录。读取数据时,发现多了一些记录。v后两种不可反复读有时也称为幻影景象后两种不可反复读有时也称为幻影景象phantom rowv并发操作之所以产生错误,是由于义务执行期间相互关扰呵斥的。当将义务定义成事务,事务具有的特性特别是隔离性得以保证时,就会防止上述错误的发生。v但是,假设只允许事务串行操作会降低系统的效率。所以,多数DBMS采用事务机制和封锁机制进展并发控制,既保证了数据的一致性,又保证了系统效率。 二、封锁机制二、封锁机制v封锁机制是并发控制的主要手段;v封锁就是事务T在对某个数据对象例如表、记录等操作
11、之前,先向系统发出恳求,对其加锁;v加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。v封锁具有3个环节:v第一个环节是恳求加锁;v第二个环节是获得锁;v第三个环节是释放锁。v为了到达封锁的目的,在运用时事务应选择适宜的锁,并要服从一定的封锁协议。v根本的封锁类型有两种:排它锁(Exclusive Locks,简称X锁)和共享锁(Share Locks,简称S锁)。v 排它锁排它锁X锁锁)v 排它锁也称为独占锁或写锁。一旦事务排它锁也称为独占锁或写锁。一旦事务T对数据对象对数据对象A加上加上排它锁排它锁(X锁锁),那么只允许,那么只允许T读取和修正
12、读取和修正A,其他任何事务既不,其他任何事务既不能读取和修正能读取和修正A,也不能再对,也不能再对A加任何类型的锁,直到加任何类型的锁,直到T释放释放A上的锁为止。上的锁为止。v 共享锁共享锁S锁锁v共享锁又称读锁。假设事务共享锁又称读锁。假设事务T对数据对象对数据对象A加上共加上共享锁享锁(S锁锁),事务,事务T对数据对象对数据对象A只能读不能修正,其他事务对只能读不能修正,其他事务对A只能再加只能再加S锁,不能加锁,不能加X锁,直到事务锁,直到事务T释放释放A上的上的S锁为止。锁为止。v锁的相容矩阵Y=Yes,相容的恳求,相容的恳求N=No,不相容的恳求,不相容的恳求T2 T1XS-XNN
13、YSNYY-YYY运用封锁机制处理丧失修正问题运用封锁机制处理丧失修正问题P296T1T2 Xlock A R(A)=16Xlock A AA-1等待 W(A)=15等待 Commit等待 Unlock A等待获得Xlock AR(A)=15AA-1W(A)=14CommitUnlock An 事务T1在读A进展修正之前先对A加X锁;n 当T2再恳求对A加X锁时被回绝;n T2只能等待T1释放A上的锁后T2获得对A的X锁n 这时T2读到的A曾经是T1更新过的值15;n T2按此新的A值进展运算,并将结果值A=14送回到磁盘。防止了丧失T1的更新。运用封锁机制处理读运用封锁机制处理读“脏数据问题
14、脏数据问题T1T2 Xlock CR(C)=100CC*2W(C)=200Slock C等待 ROLLBACK等待(C恢复为100)等待Unlock C等待获得Slock CR(C)=100Commit CUnlock Cn 事务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读“脏数据不读不读“脏数据脏数据 运用封锁机制处理不可反复读问题运用封锁机制处理不可反复读问题T1T2 Slock ASlock BR(A)
15、=50R(B)=100求和=150Xlock 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 其他事务只能再对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锁 封锁协议封锁协议v简
16、单地对数据加X锁和S锁并不能保证数据库的一致性。在对数据对象加锁时,还需求商定一些规那么。这些规那么称为封锁协议(Locking Protocol)。对封锁方式规定不同的规那么,就构成了各种不同的封锁协议。v一级封锁协议v一级封锁协议是:事务T在修正数据之前必需先对其加X锁,直到事务终了才释放;v根据该协议要求,将表中的义务T1、T2作为事务,用A表示库存,重新执行各操作的过程见表过程见表所示。 v遵照一级封锁协议的事务执行过程遵照一级封锁协议的事务执行过程 顺序T1T2库存A的值1Xlock A获得502读A=50Xlock A,等待503A=A+100写回A=150CommitUnlock
17、 A等待1504获得Xlock A读A=150A=A-40写回A=110CommitUlock A110v一级封锁协议可有效地防止“丧失更新,并可以保证事务T的可恢复性。v但是,由于一级封锁没有要求对读数据进展加锁,所以不能保证可反复读和不读“脏数据。 v服从一级封锁协议发生的读服从一级封锁协议发生的读“脏数据过程脏数据过程 顺序T1T2库存A的值1Xlock A获得读A=50A=A+100写回A=150Unlock A501502读A=1501503ROLLBACK50v二级封锁协议二级封锁协议v事务事务T对要修正数据必需先加对要修正数据必需先加X锁,直到事锁,直到事务终了才释放务终了才释放
18、X锁;对要读取的数据必需先加锁;对要读取的数据必需先加S锁,锁,读完后即可释放读完后即可释放S锁。锁。v服从二级封锁协议发生的服从二级封锁协议发生的“不可反复读的过程不可反复读的过程 顺序T1T2A的值B的值1Slock A,B 获得读A=50读B=100Ulock A,BXlock B等待等待获得 50 1002求和A+B=150Slock A 得到Slock B 等待等待获得读 B=100BB4回写B=400CommitUlock B 50 100 4003读A50读B=400和450(验算错误) 50 400v三级封锁协议三级封锁协议v 三级封锁协议是事务三级封锁协议是事务T在读取数据之
19、前必需先对在读取数据之前必需先对其加其加S锁,在要修正数据之前必需先对其加锁,在要修正数据之前必需先对其加X锁,直锁,直到事务终了后才释放一切锁。到事务终了后才释放一切锁。v 由于三级封锁协议强调即使事务读完数据由于三级封锁协议强调即使事务读完数据A之后之后也不释放也不释放S锁,从而使得别的事务无法更改数据锁,从而使得别的事务无法更改数据A。三级封锁协议不但防止了丧失修正和不读三级封锁协议不但防止了丧失修正和不读“脏数据脏数据,而且防止了不可反复读。,而且防止了不可反复读。 三、活锁和死锁三、活锁和死锁v1、活、活 锁锁v假设事务假设事务T1封锁了数据封锁了数据R,T2事务又恳求封锁事务又恳求
20、封锁R,于是,于是T2等待。等待。T3也恳求封锁也恳求封锁R,当,当T1释放了释放了R上的封锁之后系统首先同意了上的封锁之后系统首先同意了T3的要求,的要求,T2依然依然等待。然后等待。然后T4又恳求封锁又恳求封锁R,当,当T3释放了释放了R上的上的封锁之后系统又同意了封锁之后系统又同意了T4的恳求,的恳求,T2有能有能够永远等待。这种在多个事务恳求对同一数据封够永远等待。这种在多个事务恳求对同一数据封锁时,使某一用户总是处于等待的情况称为活锁锁时,使某一用户总是处于等待的情况称为活锁。v处理活锁问题的方法是采用先来先效力。即对要处理活锁问题的方法是采用先来先效力。即对要求封锁数据的事务排队,
21、使前面的事务先获得数求封锁数据的事务排队,使前面的事务先获得数据的封锁权。据的封锁权。2、死、死 锁锁v 假设事务T1和T2都需求数据Rl和R2,操作时Tl封锁了数据R1,T2封锁了数据R2;然后T1又恳求封锁R2,T2又恳求封锁Rl;因T2已封锁了R2,故T1等待T2释放R2上的锁。同理,因T1已封锁了R1,故T2等待T1释放R1上的锁。由于Tl和T2都没有获得全部需求的数据,所以它们不会终了,只能继续等待。这种多事务交错等待的僵持局面称为死锁。v 数据库中处理死锁问题主要有两类方法:一类方法是采用一定措施来预防死锁的发生;另一类方法是允许发生死锁,然后采用一定手段定期诊断系统中有无死锁,假
22、设有那么解除之。 1预防死锁预防死锁v死锁的预防v产生死锁的缘由是两个或多个事务都已封锁了一些数据对象,然后又都恳求对已为其他事务封锁的数据对象加锁,从而出现死等待;v预防死锁的发生就是要破坏产生死锁的条件;v预防死锁的方法v 一次封锁法v 顺序封锁法v一次封锁法一次封锁法v要求每个事务必需一次将一切要运用的数据全部加锁要求每个事务必需一次将一切要运用的数据全部加锁,否那么就不能继续执行;,否那么就不能继续执行;v一次封锁法存在的问题:一次封锁法存在的问题:v降低并发度降低并发度v扩展封锁范围,将以后要用到的全部数据加锁,势必扩展封锁范围,将以后要用到的全部数据加锁,势必扩展了封锁的范围,从而
23、降低了系统的并发度扩展了封锁的范围,从而降低了系统的并发度v难于事先准确确定封锁对象难于事先准确确定封锁对象v顺序封锁法顺序封锁法v顺序封锁法是预先对数据对象规定一个封锁顺序,一顺序封锁法是预先对数据对象规定一个封锁顺序,一切事务都按这个顺序实行封锁。切事务都按这个顺序实行封锁。v顺序封锁法存在的问题顺序封锁法存在的问题v维护本钱维护本钱v数据库系统中封锁的数据对象极多,并且在不断地变数据库系统中封锁的数据对象极多,并且在不断地变化。化。v难以实现:很难事先确定每一个事务要封锁哪些对象难以实现:很难事先确定每一个事务要封锁哪些对象2死锁的诊断与解除死锁的诊断与解除v死锁的诊断v超时法v事务等待图法v超时法v假设一个事务的等待时间超越了规定的时限,就以为发生了死锁;v优点:实现简单v缺陷v有能够误判死锁v时限假设设置得太长,死锁发生后不能及时发现v等待图法等待图法v用事务等待图动态反映一切事务的等待情况用事务等待图动态反映一切事务的等待情况v事务等待图是一个有向图事务等待图是一个有向图G=(T,U)vT为结点的集合,每个结点表示正运转的事务为结点的集合,每个结点表示正运转的事务vU为边的集合,每条边表示事务等待的情况为边的集合,每条边表示事务等待的情况v假设假设T1等待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车间员工岗位价值评估指标
- 2026年国家义务教育质量监测小学生心理健康测试试卷及答案解析
- 马拉松比赛活动保障工作方案
- 掌握高分逻辑|小学数学应用题解题方法梳理课
- 2026年初中道德与法治七年级下册期末真题专项训练试卷
- 南京市2020年有关建设工程计价管理问题解答汇编(四)
- 生态瞬时评估在自杀研究中的应用
- 国内各类广告业务公司技术总监述职报告
- 2026年禽肉加工创新行业报告
- 2026年新能源汽车核心零部件创新驱动研究报告
- 2024糖尿病视网膜病变临床诊疗指南
- 体检重要异常结果规范管理
- 特种设备生产单位质量安全总监和质量安全员考试题库(含答案)
- 水马封路施工方案
- 缺血缺氧性脑病课件
- 项目工程师知识培训课件
- 新招投标法培训课件
- 脊髓型颈椎病的康复治疗
- 邻里纠纷及其合法合理处理课件
- 快运物流月结合同协议书
- 儿童暴发性心肌炎诊治专家建议(2025)解读课件
评论
0/150
提交评论