第8章事务与并发控制

上传人:工**** 文档编号:580497998 上传时间:2024-08-29 格式:PPT 页数:47 大小:1.10MB
返回 下载 相关 举报
第8章事务与并发控制_第1页
第1页 / 共47页
第8章事务与并发控制_第2页
第2页 / 共47页
第8章事务与并发控制_第3页
第3页 / 共47页
第8章事务与并发控制_第4页
第4页 / 共47页
第8章事务与并发控制_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《第8章事务与并发控制》由会员分享,可在线阅读,更多相关《第8章事务与并发控制(47页珍藏版)》请在金锄头文库上搜索。

1、第第8 8章章 事务与并发控制事务与并发控制v8.1 8.1 事务事务8.1.1 8.1.1 事务的基本概念事务的基本概念8.1.2 8.1.2 事务的特征事务的特征8.1.3 8.1.3 事务处理模型事务处理模型v8.2 8.2 并发控制并发控制谬梗宋尔姬显腮额渭虏阶磅火龟控录悟规住因绰高布陨康辐铂吊掷宛古棋第8章事务与并发控制第8章事务与并发控制8.1.1 8.1.1 事务的基本概念事务的基本概念v事务是用户定义的数据操作系列,这些事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元,一个事操作作为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么务内的所有语句被作为一个

2、整体,要么全部执行,要么全部不执行。全部执行,要么全部不执行。 v例如:对于一个转帐活动:例如:对于一个转帐活动:A A帐户转帐给帐户转帐给B B帐户帐户n n元钱,这个活动包含两个动作:元钱,这个活动包含两个动作:第一个动作:第一个动作:A A帐户帐户 n n 第二个动作:第二个动作:B B帐户帐户 n n任襄倘谚蕾昌久旋枕勘恳管涂限海慑衔必谋厅渴奶伯咆蔫匀澳僵寒茁杀呐第8章事务与并发控制第8章事务与并发控制说明说明v假设第一个操作成功了,第二个操作由于某假设第一个操作成功了,第二个操作由于某种原因没有成功,在系统恢复正常后,种原因没有成功,在系统恢复正常后,A A账账户的金额应是多少?户的

3、金额应是多少?v如果如果B B账户的金额没有变化,则正确的情况账户的金额没有变化,则正确的情况是是A A账户的金额也应该没有变化。账户的金额也应该没有变化。v怎样保证在系统恢复之后,怎样保证在系统恢复之后,A A账户中的金额账户中的金额没有减少?这就要用到事务的概念。没有减少?这就要用到事务的概念。v事务可以保证在一个事务中的全部操作或者事务可以保证在一个事务中的全部操作或者全部成功,或者全部失败。全部成功,或者全部失败。挚肤挤瞄城销拌曝铣迪吹腿蝶济妨酱宅缅州缓画钾桥蚕破鞘薄昏乳吐垣晴第8章事务与并发控制第8章事务与并发控制8.1.2 8.1.2 事务的特征事务的特征 v原子性原子性(Atom

4、icityAtomicity) :指事务是数据库的逻辑工:指事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。作单位,事务中的操作要么都做,要么都不做。 v一致性一致性(ConsistencyConsistency) :指事务执行的结果必须:指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状是使数据库从一个一致性状态变到另一个一致性状态。态。v隔离性隔离性(IsolationIsolation) :指数据库中一个事务的执:指数据库中一个事务的执行不能被其它事务干扰。行不能被其它事务干扰。v持久性持久性( Durability Durability ) :也称为永久性。

5、指事务:也称为永久性。指事务一旦提交,其对数据库数据的改变就是永久的。一旦提交,其对数据库数据的改变就是永久的。 藏磅吼僧泽庚迎谚宇祥熙辐彦当曾景抛宁颈瑰紊寞霞姨拯漏碱职括痹烫过第8章事务与并发控制第8章事务与并发控制v保证事务的保证事务的ACIDACID特性是事务处理的重要特性是事务处理的重要任务。任务。v事务的事务的ACIDACID特性可能遭到破坏的因素有:特性可能遭到破坏的因素有:多个事务并行运行时,不同事务的操多个事务并行运行时,不同事务的操作有交叉情况;作有交叉情况;事务在运行过程中被强迫停止。事务在运行过程中被强迫停止。 磨辆蕊裤千傲浚嫡疫锅潞忆嚷羌滇敖酚社言勋晴梅熊夏障摔妇鸥峰坦

6、躬趋第8章事务与并发控制第8章事务与并发控制8.1.3 8.1.3 事务处理模型事务处理模型 v隐式事务隐式事务:隐式事务是每一条数据操:隐式事务是每一条数据操作语句都自动地成为一个事务。作语句都自动地成为一个事务。v显式事务显式事务:有显式的开始和结束标记:有显式的开始和结束标记的事务。的事务。 ISOISO事务处理模型事务处理模型 T-SQLT-SQL事务处理模型事务处理模型(SQL Server(SQL Server采用采用) )层娥科叹鞋姐馅喳频拒褒丑芭偏沿酉蹲藩鸣籽下釜猪伦宴刷旺鸳珊瑶奄梅第8章事务与并发控制第8章事务与并发控制T-SQLT-SQL事务处理模型事务处理模型v每个事务都

7、有显式的开始和结束标记。每个事务都有显式的开始和结束标记。v事务的开始标记是:事务的开始标记是:BEGIN TRANSACTION | TRANBEGIN TRANSACTION | TRANv事务的结束标记为:事务的结束标记为:COMMIT COMMIT TRANSACTIONTRANSACTIONTRANTRANROLLBACK ROLLBACK TRANSACTIONTRANSACTIONTRANTRAN桂糯离蜜鬼演锡圆正花玉偷尸么逮滩育椰还钉骇哮春驾巨柴计脚尘沤蓟亩第8章事务与并发控制第8章事务与并发控制示例示例BEGIN TRANSACTIONBEGIN TRANSACTION UP

8、DATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 = = 帐户总额帐户总额 - n - nWHERE WHERE 帐户名帐户名 = = A AUPDATE UPDATE 支付表支付表 SET SET 帐户总额帐户总额 = = 帐户总额帐户总额 + n + nWHERE WHERE 帐户名帐户名 = = B BCOMMITCOMMIT崔侮搓赃迅蓄岔雌酗阉择彝赏丙恬听耪咽难呢颓哀且交府梦璃几霞掇晰拯第8章事务与并发控制第8章事务与并发控制8.2 8.2 并发控制并发控制 v8.2.1 8.2.1 并发控制概述并发控制概述 v8.2.2 8.2.2 并发控制措施并发控制措施v8

9、.2.3 8.2.3 封锁协议封锁协议v8.2.4 8.2.4 活锁和死锁活锁和死锁v8.2.5 8.2.5 并发调度的可串行性并发调度的可串行性 v8.2.6 8.2.6 两段锁协议两段锁协议 硼合总蛹挤绦鸯荧垫沃径磐棺蚀掘央楼沛侯灰撼反眷例郡摹访冉检呵搬允第8章事务与并发控制第8章事务与并发控制8.2.1 8.2.1 并发控制概述并发控制概述v数据库中的数据是一个共享的资源,因此会数据库中的数据是一个共享的资源,因此会有很多用户同时使用数据库中的数据,有很多用户同时使用数据库中的数据,v在多用户系统中,可能同时运行着多个事务,在多用户系统中,可能同时运行着多个事务,而事务的运行需要而事务的

10、运行需要时间时间,并且事务中的操作,并且事务中的操作是在一定的是在一定的数据数据上进行的。上进行的。v当系统中同时有多个事务在运行时,特别是当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼当这些事务是对同一段数据进行操作时,彼此之间就有可能产生此之间就有可能产生相互干扰相互干扰的情况。的情况。v如:订票、银行如:订票、银行丽标函揖露急笨词哆欣绢醛练了求闹烘兴屋头烦汽笔糊遂毫邑持贱舰颓椭第8章事务与并发控制第8章事务与并发控制不同的多事务执行方式不同的多事务执行方式v串行执行串行执行每每个个时时刻刻只只有有一一个个事事务务运运行行,其其他他事事务务必必须须等等到到这这

11、个个事事务务结束以后方能运行。结束以后方能运行。问问题题:不不能能充充分分利利用用系系统统资资源源,发发挥挥数数据据库库共共享享资资源源的的特点。特点。T1T2T3嚏越霓诵兆栋狠炳兹伍劝肃识淀汇拈慢辜霹陇寸兰流歼月被甥赵驳杉捏付第8章事务与并发控制第8章事务与并发控制不同的多事务执行方式不同的多事务执行方式v交叉并行执行交叉并行执行在在单单处处理理机机系系统统中中,事事务务的的并并行行执执行行是是这这些些并并行行事事务务的的并行操作轮流交叉运行。并行操作轮流交叉运行。单单处处理理机机系系统统中中的的并并行行事事务务并并没没有有真真正正地地并并行行运运行行,但但能能够够减减少少处处理理机机的的空

12、空闲闲时时间间,提高系统的效率。提高系统的效率。T1T2T3材袒跨楼揍黍纹圭瘴扎硕聪扁箍及欧挪恭涪函札圾绩限尊劲止棚旱光沫晚第8章事务与并发控制第8章事务与并发控制不同的多事务执行方式不同的多事务执行方式v同时并发方式同时并发方式多多处处理理机机系系统统中中,每每个个处处理理机机可可以以运运行行一个事务,一个事务,多多个个处处理理机机可可以以同同时时运运行行多多个个事事务务,实实现多个事务真正的并行运行。现多个事务真正的并行运行。v这这里里讨讨论论单单处处理理机机环环境境下下的的并并发发控控制技术。制技术。非贾侗碰哥便粘符载饺醒夯势玄献砷刮王味庙舅械革鸳焙削峡斑丹蚤居递第8章事务与并发控制第8

13、章事务与并发控制并发事务的相互干扰示例并发事务的相互干扰示例vA A、B B两个订票点恰巧同时办理同一架航班的飞机两个订票点恰巧同时办理同一架航班的飞机订票业务。设其操作过程及顺序如下:订票业务。设其操作过程及顺序如下: A A订票点(事务订票点(事务A A)读出航班目前的机票余额数,假)读出航班目前的机票余额数,假设为设为1010张;张;B B订票点(事务订票点(事务B B)读出航班目前的机票余额数,也)读出航班目前的机票余额数,也为为为为1010张;张;A A订票点订出订票点订出6 6张机票,修改机票余额为张机票,修改机票余额为10-6=410-6=4,并,并将将4 4写回到数据库中;写回

14、到数据库中;B B订票点订出订票点订出5 5张机票,修改机票余额为张机票,修改机票余额为10-5=510-5=5,并,并将将5 5写回到数据库中;写回到数据库中;椿滤梁膏囱猜苔岔面中箱主猫武笺马桨带舅辱搏谢恨蜘知慧芹遗荚置南厩第8章事务与并发控制第8章事务与并发控制事务并发执行带来的问题事务并发执行带来的问题v会会产产生生多多个个事事务务同同时时存存取取同同一一数数据据的的情情况。况。 v可可能能会会存存取取和和存存储储不不正正确确的的数数据据,破破坏坏事务一致性和数据库的一致性。事务一致性和数据库的一致性。v并并发发控控制制是是衡衡量量DBMSDBMS性性能能的的重重要要标标志志之之一。一。

15、哺闭汁隶闯玲葬暑掂蔚令光笺深酶鹤颓浮善殿识媚钒蜜盈癸童锥翱狗嫩企第8章事务与并发控制第8章事务与并发控制并发操作带来的数据不一致性并发操作带来的数据不一致性v丢失修改丢失修改v读读“脏脏”数据数据v不可重复读不可重复读v产生产生“幽灵幽灵”数据数据振招螺峰砒瞥今漠浮湛扒沿咙谆鄂激售晾过捣中检情辕歇靶烁矣傲蚕属禽第8章事务与并发控制第8章事务与并发控制丢失修改丢失修改纫陪帘苑意拘搐稗诧氓禹厩昔剪赞千者阀钩洼烽绳用咙角理烙坞董钟尧匠第8章事务与并发控制第8章事务与并发控制读读“脏脏”数据数据 醇剖样荔达要堵呐铝畔归势云营共媳潦淤晓灯籽套宿软日承嘛掷杀攀笨渗第8章事务与并发控制第8章事务与并发控制不

16、可重复读不可重复读 编叔明翘府尼波谈熄绵臣腾抡众骡距蚤拧尊结舟焕交涸潞庶漾焰枝瑚铸孜第8章事务与并发控制第8章事务与并发控制产生产生“幽灵幽灵”数据数据 v属于不可重复读的范畴。属于不可重复读的范畴。v指当事务指当事务T T1 1按一定条件从数据库中读取了某按一定条件从数据库中读取了某些数据记录后,事务些数据记录后,事务T T2 2删除了其中的部分记删除了其中的部分记录,或者在其中添加了部分记录,则当录,或者在其中添加了部分记录,则当T T1 1再再次按相同条件读取数据时,发现其中莫名其次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些妙地少了(对删除)或多了(对插入

17、)一些记录。记录。v这样的数据对这样的数据对T T1 1来说就是来说就是“幽灵幽灵”数据或称数据或称“幻影幻影”数据。数据。 巷渭陪呼晚掏茁怀簧恫迸腰侦兵扇妄申畔柠扮伴耿孤唾惜梢鸯闷诅炬死嚎第8章事务与并发控制第8章事务与并发控制8.2.2 8.2.2 并发控制措施并发控制措施v控制目标:事务运行过程中尽可能隔离控制目标:事务运行过程中尽可能隔离事务外操作对本事务数据环境的影响。事务外操作对本事务数据环境的影响。v并发控制的主要技术并发控制的主要技术加锁加锁(Locking)(Locking)v加锁就是事务加锁就是事务T T在对某个数据操作之前,在对某个数据操作之前,先向系统发出请求,封锁其所

18、要使用的先向系统发出请求,封锁其所要使用的数据。在事务数据。在事务T T释放它的锁之前,其他释放它的锁之前,其他事务不能操作这些数据。事务不能操作这些数据。 v锁的类型:锁的类型:共享锁共享锁、排他锁排他锁虫训殃丝榔泛讹妥采吨洗殿划匿裙侧啮障囊牺拷成却汞查朔丰膨恰脏胡摊第8章事务与并发控制第8章事务与并发控制共享锁共享锁v简记为简记为S S锁锁:若事务:若事务T T给数据对象给数据对象A A加了加了S S锁,锁,则事务则事务T T可以读可以读A A,但不能修改,但不能修改A A,其他事,其他事务可以再给务可以再给A A加加S S锁,但不能加锁,但不能加X X锁,直到锁,直到T T释放了释放了A

19、 A上的上的S S锁为止。锁为止。v对于读操作(检索),可以多个事务同时对于读操作(检索),可以多个事务同时获得共享锁,但阻止其它事务对已获得共获得共享锁,但阻止其它事务对已获得共享锁的数据进行排它封锁。享锁的数据进行排它封锁。叫胃臃惨石肺翠俯月曙秋蔑晶匝醛蜕蛆传慢侯摊牵氓悟巷西霍窍蚌语加灾第8章事务与并发控制第8章事务与并发控制排他锁排他锁v简记为简记为X X锁锁 :若事务:若事务T T给数据对象给数据对象A A加了加了X X锁,则允许锁,则允许T T读取和修改读取和修改A A,但不允许其他,但不允许其他事务再给事务再给A A加任何类型的锁和进行任何操加任何类型的锁和进行任何操作。作。v一旦

20、一个事务获得了对某一数据的排他锁,一旦一个事务获得了对某一数据的排他锁,则任何其他事务均不能对该数据进行任何则任何其他事务均不能对该数据进行任何封锁,其他事务只能进入等待状态,直到封锁,其他事务只能进入等待状态,直到第一个事务撤销了对该数据的封锁。第一个事务撤销了对该数据的封锁。羚园醛慎仇慈和娇讥涕检碘举丛瓷帽埂晴地广葛阉委挂窃暮携痕鹊孝拽羞第8章事务与并发控制第8章事务与并发控制锁的相容矩阵 进犯迂蜂孝仆邹源咀终缘鲸吸跌隙汰卑答筑绳眷马情肾毁善垂维谦明凉罩第8章事务与并发控制第8章事务与并发控制8.2.3 8.2.3 封锁协议封锁协议 v在运用在运用X X锁和锁和S S锁对数据对象进行加锁时

21、,锁对数据对象进行加锁时,还需要约定一些规则,如何时申请还需要约定一些规则,如何时申请X X锁或锁或S S锁、持锁时间、何时释放锁等。锁、持锁时间、何时释放锁等。v称这些规则为称这些规则为封锁协议封锁协议或或加锁协议加锁协议。v对封锁方式规定不同的规则,就形成了对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。各种不同级别的封锁协议。v不同级别的封锁协议达到的系统一致性不同级别的封锁协议达到的系统一致性级别不同。级别不同。簧另迁姑拯藩卧命级杀蔷伴傈厚腻篇阴陌筋嫉净颅厕荆裳谴设作类磊心掖第8章事务与并发控制第8章事务与并发控制一级封锁协议一级封锁协议 v对事务对事务T T要修改的数据加要

22、修改的数据加X X锁,直到事锁,直到事务结束(包括正常结束和非正常结束)务结束(包括正常结束和非正常结束)时才释放。时才释放。v一级封锁协议可以防止丢失修改,并一级封锁协议可以防止丢失修改,并保证事务保证事务T T是可恢复的是可恢复的 v但不能保证可重复读和不读但不能保证可重复读和不读“脏脏”数数据。据。哩柜熬上郧薪音惕确过盗锚栽芜楞俐拦听姥熬药坏蔗囱洲白刁波拳胀讫炒第8章事务与并发控制第8章事务与并发控制一级封锁协议示例一级封锁协议示例没有丢失修改绊迂蜂建棍触惫抖练髓孙延粉亢怯昔癌腑幸礁鉴蕉危绷奏本痪谋至勒建尼第8章事务与并发控制第8章事务与并发控制二级封锁协议二级封锁协议v一级封锁协议加上

23、对事务一级封锁协议加上对事务T T对要读取对要读取的数据加的数据加S S锁,读完后即释放锁,读完后即释放S S锁。锁。v除了可以防止丢失修改外,还可以防除了可以防止丢失修改外,还可以防止读止读“脏脏”数据。数据。v但不能保证可重复读数据。但不能保证可重复读数据。 抖柄玻瘤允妈蜜习牵或乃氢扦短搓远赁惨砖畸滑鲤诣寺品准宪枫煽荆尹檄第8章事务与并发控制第8章事务与并发控制二级封锁协议示例二级封锁协议示例没有读脏数据哦筋聘段涂悄辩杨届郁县岭侣舆毯尘胶架莉暇蚕铺表属迷甩蝉晋嫌境拘瓮第8章事务与并发控制第8章事务与并发控制三级封锁协议三级封锁协议v一级封锁协议加上事务一级封锁协议加上事务T T对要读取的对

24、要读取的数据加数据加S S锁,并直到事务结束才释放。锁,并直到事务结束才释放。v除了可以防止丢失修改和不读除了可以防止丢失修改和不读“脏脏”数据之外,还进一步防止了不可重数据之外,还进一步防止了不可重复读。复读。 够标恋课白薪褒无恕钒扦故章阳馁终酮硅象潞冻蚕玻针镶穆截映必穴拘啄第8章事务与并发控制第8章事务与并发控制三级封锁协议示例三级封锁协议示例可重复读群器锡禹碰芭足觉力挫蹿弓福滩蹦暂篙异垄彪嗅腥切附根示辣饥笔体衡媳第8章事务与并发控制第8章事务与并发控制不同级别的封锁协议总结不同级别的封锁协议总结 懊读抑燎本灼许其讶蜘特攻今微冀默咱来津赁梅华肤付育择歪氯但住仙村第8章事务与并发控制第8章事

25、务与并发控制8.2.4 8.2.4 活锁和死锁活锁和死锁v并发控制的封锁方法可能会引起活锁和并发控制的封锁方法可能会引起活锁和死锁等问题。死锁等问题。v活锁活锁像牟懒钧捉任籍宜试悼苦康洱扯胰咬嫡祭浚杏腮仪滁逮河竟魂将录吧寒持第8章事务与并发控制第8章事务与并发控制避免活锁避免活锁v简单方法是采用先来先服务的策略。简单方法是采用先来先服务的策略。v当多个事务请求封锁同一数据对象时,当多个事务请求封锁同一数据对象时,数据库管理系统按先请求先满足的事数据库管理系统按先请求先满足的事务排队策略,当数据对象上的锁被释务排队策略,当数据对象上的锁被释放后,让事务队列中第一个事务获得放后,让事务队列中第一个

26、事务获得锁。锁。 掠芥岩耻唾趟旋党舀挚藏下钩药芭和医赵赡跺洛裴搀纪淀撇惰抿锡能漱攘第8章事务与并发控制第8章事务与并发控制死锁死锁 v两个事务相互等待对方先释放资源,则会两个事务相互等待对方先释放资源,则会造成死锁。造成死锁。椒切必仆苑伊博涣悠粘效哗效限矣惩床斤混琳供壶盈羞税透鼻藕招它霄扰第8章事务与并发控制第8章事务与并发控制预防死锁的方法预防死锁的方法v一次封锁法:一次封锁法:每个事务一次将所使用数据全部加锁。每个事务一次将所使用数据全部加锁。存在的问题存在的问题降低系统并发度难于事先精确确定封锁对象v顺序封锁法:顺序封锁法:预先对数据对象规定一个封锁顺序,所预先对数据对象规定一个封锁顺序

27、,所有事务都按这个顺序封锁。有事务都按这个顺序封锁。存在的问题存在的问题维护成本:数据库系统中封锁的数据对象极多,并且在不断地变化。难以实现:很难事先确定每一个事务要封锁哪些对象。镀刽嗡博帜咒忻份涵帚蓄棱失雨此卫敏涡憎苑摧秽蚂轮讥剔瞩抢钟贯苹孜第8章事务与并发控制第8章事务与并发控制死锁的诊断死锁的诊断超时法超时法v超时法超时法。如果一个事务的等待时间超过。如果一个事务的等待时间超过了规定的时限,则认为发生了死锁。了规定的时限,则认为发生了死锁。v优点是实现起来比较简单,优点是实现起来比较简单,v缺点是可能产生误判的情况:缺点是可能产生误判的情况:如果事务因某些原因造成等待时间比较如果事务因某

28、些原因造成等待时间比较长,超过了规定的等待时限,则系统会长,超过了规定的等待时限,则系统会误认为发生了死锁。误认为发生了死锁。若时限设置的比较长,则不能对发生的若时限设置的比较长,则不能对发生的死锁进行及时的处理。死锁进行及时的处理。熔棍柔搪逛券喷桂强娄维孔忌排说暑书拆普舟搅蓝簧系寂撤绪挝罐劝独省第8章事务与并发控制第8章事务与并发控制死锁的诊断死锁的诊断等待图法等待图法v是一个有向图是一个有向图G G=(=(T T,U U) )。T T为结点的集合,每个结为结点的集合,每个结点表示正在运行的事务;点表示正在运行的事务;U U为边的集合,每条边表为边的集合,每条边表示事务等待的情况。若示事务等

29、待的情况。若T1T1等待等待T2T2,则,则T1T1和和T2T2之间之间划一条有向边,从划一条有向边,从T1T1指向指向T2T2,v并发控制子系统周期性地(比如每隔几秒)生成并发控制子系统周期性地(比如每隔几秒)生成事务的等待图,并进行检测。如果发现图中存在事务的等待图,并进行检测。如果发现图中存在回路,则表示系统中出现了死锁。回路,则表示系统中出现了死锁。碴瞄伺互攫推水或山辰瞪版柏撒侦慢饲费眨坯触狱仿烯剧篷郝盂捂惟厦丛第8章事务与并发控制第8章事务与并发控制死锁的解除死锁的解除v通常采用的方法是选择一个处理死锁代通常采用的方法是选择一个处理死锁代价最小的事务,将其撤销,释放此事务价最小的事务

30、,将其撤销,释放此事务所持有的全部锁,使其他事务可以继续所持有的全部锁,使其他事务可以继续运行下去。运行下去。v而且,对撤销事务所执行的数据修改操而且,对撤销事务所执行的数据修改操作必须加以恢复。作必须加以恢复。 挎袒珠再伟珐扭呸行懦嘿涂耪未凰垫樟撬上蒂续唱蛾冲藩换婿婚芭纹颁骄第8章事务与并发控制第8章事务与并发控制8.2.5 8.2.5 并发调度的可串行性并发调度的可串行性 v多个事务的并发执行是正确的,当且多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行仅当其结果与按某一顺序的串行执行的结果相同,则我们称这种调度为的结果相同,则我们称这种调度为可可串行化的调度串行化的调度。

31、v可串行性是并发事务正确性的准则,可串行性是并发事务正确性的准则,按这个准则,一个给定的并发调度,按这个准则,一个给定的并发调度,当且仅当它是可串行化的时,才认为当且仅当它是可串行化的时,才认为是正确的调度。是正确的调度。 彼冻联熬窥纠嫩剁茫安恶裕差粮湾谦汝层审哗滁域批号哈轧坍侗怒弟书妻第8章事务与并发控制第8章事务与并发控制可串行化调度可串行化调度例:设有两个事务,分别包含下列操作:例:设有两个事务,分别包含下列操作:事务事务T1T1:读:读B B;A=B+1A=B+1;写回;写回A A事务事务T2T2:读:读A A;B=A+1B=A+1;写回;写回B B 设设A A、B B的初值均为的初值

32、均为4 4,v按按T1 T1 T2 T2顺序执行,结果:顺序执行,结果:A A5 5,B B6 6;v按按T2 T2 T1 T1顺序执行,结果:顺序执行,结果:A A6 6,B B5 5。v当并发调度时,如果执行的结果是这两者之一,当并发调度时,如果执行的结果是这两者之一,则都是正确的结果。则都是正确的结果。 竟替铺促枉闯枝毛匹扮凶捞婶断娃两婪没挂验涌宏丙肝剩槽皖央夜脆慧药第8章事务与并发控制第8章事务与并发控制策略策略1 1:串行调度:串行调度渺香撇婴腹椅桔肋梳唁庆谱裤聋腊酶掳环堆胀担老致露咽百袭尼沟拣西去第8章事务与并发控制第8章事务与并发控制策略策略2 2:并行调度:并行调度不可串行化可

33、串行化馅鞍讲寞蚊普喀去捍迭扼驴守柞珐潭烂塘浇愚振亚曲徊呛钦陷遇碘苗吩粥第8章事务与并发控制第8章事务与并发控制8.2.6 8.2.6 两段锁协议两段锁协议v将所有的事务分为两个阶段对数据进行将所有的事务分为两个阶段对数据进行加锁和解锁:加锁和解锁:在对任何数据进行读写操作之前,首先要获在对任何数据进行读写操作之前,首先要获得对该数据的封锁。得对该数据的封锁。在释放一个封锁之后,事务不再申请和获得在释放一个封锁之后,事务不再申请和获得任何其他封锁。任何其他封锁。v两段锁协议是实现可串行化调度的充分两段锁协议是实现可串行化调度的充分条件。条件。 世担胶铁嘉苯宝豌豁绝茂凌马杠挟屡影畏泻芽戚菇蓉舀蛛聊

34、罚沸优朴波侗第8章事务与并发控制第8章事务与并发控制两段锁协议两段锁协议v可以将每个事务分成两个时期:可以将每个事务分成两个时期:申请封锁申请封锁期期和和释放封锁期释放封锁期,申请期申请要进行的封,申请期申请要进行的封锁,释放期释放所占有的封锁。锁,释放期释放所占有的封锁。v在申请期不允许释放任何锁,在释放期不在申请期不允许释放任何锁,在释放期不允许申请任何锁,这就是两段式封锁。允许申请任何锁,这就是两段式封锁。拜莉夹裕郑抉援刁宅盛栓夫追救探和莽稽贰嗡尤腊士晴灌蛆喇鸣劣应断监第8章事务与并发控制第8章事务与并发控制一些结论一些结论v事务遵守两段锁协议是可串行化调度事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。的充分条件,而不是必要条件。v若并发事务都遵守两段锁协议,则对若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可这些事务的任何并发调度策略都是可串行化的。串行化的。v若并发事务的一个调度是可串行化的,若并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议。不一定所有事务都符合两段锁协议。熙攫冶锁蕉岛胜高授筏叹擦橇妮典寂存胯宙应总遣按呵即吭蓟痔癣貉圣熊第8章事务与并发控制第8章事务与并发控制调度示例调度示例遵守两段锁协议不遵守两段锁协议早而伤跳太菠挑脚搏仅艰差硒狰媚励饮焊绷务奶汛给往黍猎条及死朵抨吕第8章事务与并发控制第8章事务与并发控制

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号