【教学课件】第八章并发控制.ppt

上传人:wuy****n92 文档编号:69884653 上传时间:2023-01-10 格式:PPT 页数:49 大小:377.47KB
返回 下载 相关 举报
【教学课件】第八章并发控制.ppt_第1页
第1页 / 共49页
【教学课件】第八章并发控制.ppt_第2页
第2页 / 共49页
点击查看更多>>
资源描述

《【教学课件】第八章并发控制.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第八章并发控制.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第八章第八章 并发控制并发控制8.1并发控制概述并发控制概述8.2封锁封锁8.3封锁协议封锁协议8.4活锁和死锁活锁和死锁8.5并发调度的可串行性并发调度的可串行性8.6两段锁协议两段锁协议8.7封锁的粒度封锁的粒度8.8Oracle的并发控制的并发控制8.9小结小结8.6两段锁协议两段锁协议l两段锁协议的内容两段锁协议的内容1.在对任何数据进行读、写操作之前,在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁事务首先要获得对该数据的封锁2.在释放一个封锁之后,事务不再获得在释放一个封锁之后,事务不再获得任何其他封锁。任何其他封锁。两段锁协议(续)两段锁协议(续)l“两段两段”锁的含

2、义锁的含义事务分为两个阶段事务分为两个阶段第一阶段是获得封锁,也称为扩展阶段;第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。第二阶段是释放封锁,也称为收缩阶段。两段锁协议(续)两段锁协议(续)例:例:事务事务1的封锁序列:的封锁序列:SlockA.SlockB.XlockC.UnlockB.UnlockA.UnlockC;事务事务2的封锁序列:的封锁序列:SlockA.UnlockA.SlockB.XlockC.UnlockC.UnlockB;事务事务1遵守两段锁协议,而事务遵守两段锁协议,而事务2不遵守两段协议。不遵守两段协议。两段锁协议(续)两段锁协议(续)l并行

3、执行的所有事务均遵守两段锁协议,则对并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。这些事务的所有并行调度策略都是可串行化的。所有遵守两段锁协议的事务,其并行执行的结所有遵守两段锁协议的事务,其并行执行的结果一定是正确的果一定是正确的l事务遵守两段锁协议是可串行化调度的事务遵守两段锁协议是可串行化调度的充分条充分条件件,而不是必要条件,而不是必要条件l可串行化的调度中,不一定所有事务都必须符可串行化的调度中,不一定所有事务都必须符合两段锁协议。合两段锁协议。两段锁协议(续)两段锁协议(续)T1SlockB读读B=2Y=BXlockAA=Y+1写回写回A=3Un

4、lockBUnlockAT2SlockA等待等待等待等待等待等待等待等待等待等待SlockA读读A=3Y=AXlockBB=Y+1写回写回B=4UnlockBUnlockAT1SlockB读读B=2Y=BUnlockBXlockAA=Y+1写回写回A=3UnlockAT2SlockA等待等待等待等待等待等待等待等待SlockA读读A=3X=AUnlockAXlockBB=X+1写回写回B=4UnlockB(a)遵守两段锁协议遵守两段锁协议(b)不遵守两段锁协议不遵守两段锁协议T1SlockB读读B=2Y=BUnlockBXlockAA=Y+1写回写回A=3UnlockAT2SlockA读读A=

5、2X=AUnlockAXlockB等待等待XlockBB=X+1写回写回B=3UnlockB(c)不遵守两段锁协议不遵守两段锁协议两段锁协议(续)两段锁协议(续)l两段锁协议与防止死锁的一次封锁法两段锁协议与防止死锁的一次封锁法一次封锁法要求每个事务必须一次将所有要一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议因此一次封锁法遵守两段锁协议但是两段锁协议并不要求事务必须一次将所但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁有要使用的数据全部加锁,因此遵守两段锁协议的事

6、务可能发生死锁协议的事务可能发生死锁两段锁协议(续)两段锁协议(续)图图8.7遵守两段锁协议的事务发生死锁遵守两段锁协议的事务发生死锁T1SlockB读读B=2XlockA等待等待等待等待T2SlockA读读A=2XlockA等待等待两段锁协议(续)两段锁协议(续)l两段锁协议与三级封锁协议两段锁协议与三级封锁协议两类不同目的的协议两类不同目的的协议两段锁协议两段锁协议保证并发调度的正确性保证并发调度的正确性三级封锁协议三级封锁协议在不同程度上保证数据一致性在不同程度上保证数据一致性遵守第三级封锁协议必然遵守两段协议遵守第三级封锁协议必然遵守两段协议第八章第八章并发控制并发控制8.1并发控制概

7、述并发控制概述8.2封锁封锁8.3封锁协议封锁协议8.4活锁和死锁活锁和死锁8.5并发调度的可串行性并发调度的可串行性8.6两段锁协议两段锁协议8.7封锁的粒度封锁的粒度8.8Oracle的并发控制的并发控制8.9小结小结8.7封锁的粒度封锁的粒度8.7.1封锁粒度封锁粒度8.7.2多粒度封锁多粒度封锁8.7.3意向锁意向锁8.7.1封锁粒度封锁粒度一、什么是封锁粒度一、什么是封锁粒度二、选择封锁粒度的原则二、选择封锁粒度的原则一、什么是封锁粒度一、什么是封锁粒度lX锁和锁和S锁都是加在某一个数据对象上的锁都是加在某一个数据对象上的l封锁的对象封锁的对象:逻辑单元,物理单元逻辑单元,物理单元例

8、:在关系数据库中,封锁对象:例:在关系数据库中,封锁对象:逻辑单元逻辑单元:属性值、属性值集合、元组、关系、索属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等引项、整个索引、整个数据库等物理单元:页(数据页或索引页)、物理记录等物理单元:页(数据页或索引页)、物理记录等什么是封锁粒度(续)什么是封锁粒度(续)l封锁对象可以很大也可以很小封锁对象可以很大也可以很小例:例:对整个数据库加锁对整个数据库加锁对某个属性值加锁对某个属性值加锁l封锁对象的大小称为封锁的粒度封锁对象的大小称为封锁的粒度(Granularity)l多粒度封锁多粒度封锁(multiplegranularitylo

9、cking)在一个系统中同时支持多种封锁粒度供不同在一个系统中同时支持多种封锁粒度供不同的事务选择的事务选择8.7.1封锁粒度封锁粒度一、什么是封锁粒度一、什么是封锁粒度二、选择封锁粒度的原则二、选择封锁粒度的原则二、选择封锁粒度的原则二、选择封锁粒度的原则l封锁的粒度越封锁的粒度越大,小,大,小,l系统被封锁的对象系统被封锁的对象少,多,少,多,l并发度并发度小,高,小,高,l系统开销系统开销小,大,小,大,l选择封锁粒度:选择封锁粒度:考虑封锁机构和并发度两个因素考虑封锁机构和并发度两个因素对系统开销与并发度进行权衡对系统开销与并发度进行权衡选择封锁粒度的原则(续)选择封锁粒度的原则(续)

10、l需要处理多个关系的大量元组的用户事务:以需要处理多个关系的大量元组的用户事务:以数据库为封锁单位;数据库为封锁单位;l需要处理大量元组的用户事务:以关系为封锁需要处理大量元组的用户事务:以关系为封锁单元;单元;l只处理少量元组的用户事务:以元组为封锁单只处理少量元组的用户事务:以元组为封锁单位位8.7封锁的粒度封锁的粒度8.7.1封锁粒度封锁粒度8.7.2多粒度封锁多粒度封锁8.7.3意向锁意向锁8.7.2多粒度封锁多粒度封锁l多粒度树多粒度树l以树形结构来表示多级封锁粒度以树形结构来表示多级封锁粒度l根结点是整个数据库,表示最大的数据根结点是整个数据库,表示最大的数据粒度粒度l叶结点表示最

11、小的数据粒度叶结点表示最小的数据粒度多粒度封锁(续)多粒度封锁(续)例:三级粒度树。根结点为数据库,数据库的子例:三级粒度树。根结点为数据库,数据库的子结点为关系,关系的子结点为元组。结点为关系,关系的子结点为元组。数据库数据库关系关系Rn关系关系R1元组元组元组元组元组元组元组元组多粒度多粒度封锁协议封锁协议l允许多粒度树中的每个结点被独立地加允许多粒度树中的每个结点被独立地加锁锁l对一个结点加锁意味着这个结点的所有对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁后裔结点也被加以同样类型的锁l在多粒度封锁中一个数据对象可能以两在多粒度封锁中一个数据对象可能以两种方式封锁:种方式

12、封锁:显式封锁和隐式封锁显式封锁和隐式封锁显式封锁和隐式封锁显式封锁和隐式封锁l显式封锁显式封锁:直接加到数据对象上的封锁直接加到数据对象上的封锁l隐式封锁隐式封锁:由于其上级结点加锁而使该数由于其上级结点加锁而使该数据对象加上了锁据对象加上了锁l显式封锁和隐式封锁的效果是一样的显式封锁和隐式封锁的效果是一样的对某个数据对象加锁时系统检查的内容对某个数据对象加锁时系统检查的内容l该数据对象该数据对象有无显式封锁与之冲突有无显式封锁与之冲突l所有上级结点所有上级结点检查本事务的显式封锁是否与该数据对象上的隐式检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:封锁冲突:(由上级结点封锁造成的)

13、由上级结点封锁造成的)l所有下级结点所有下级结点看上面的显式封锁是否与本事务的隐式封锁看上面的显式封锁是否与本事务的隐式封锁(将加到(将加到下级结点的封锁)下级结点的封锁)冲突。冲突。8.7封锁的粒度封锁的粒度8.7.1封锁粒度封锁粒度8.7.2多粒度封锁多粒度封锁8.7.3意向锁意向锁8.7.3意向锁意向锁l引进意向锁(引进意向锁(intentionlock)目的)目的提高对某个数据对象加锁时系统的检查效率提高对某个数据对象加锁时系统的检查效率什么是意向锁什么是意向锁l对任一结点加基本锁,必须对任一结点加基本锁,必须先先对它的上对它的上层结点层结点加意向锁加意向锁l如果对一个结点加意向锁,则

14、说明该结如果对一个结点加意向锁,则说明该结点的点的下层结点下层结点正在被加锁正在被加锁意向锁意向锁(续续)例:对任一元组例:对任一元组r加锁,先关系加锁,先关系R加意向锁加意向锁l事务事务T要对关系要对关系R加加X锁锁,系统只要检查根结点系统只要检查根结点数据库和关系数据库和关系R是否已加了不相容的锁,是否已加了不相容的锁,l不需要搜索和检查不需要搜索和检查R中的每一个元组是否加了中的每一个元组是否加了X锁锁常用意向锁常用意向锁l意向共享锁意向共享锁(IntentShareLock,简称,简称IS锁锁)l意向排它锁意向排它锁(IntentExclusiveLock,简称,简称IX锁锁)l共享意

15、向排它锁共享意向排它锁(ShareIntentExclusiveLock,简称,简称SIX锁锁)意向锁(续)意向锁(续)lIS锁锁如如果果对对一一个个数数据据对对象象加加IS锁锁,表表示示它它的的后后裔裔结点拟(意向)加结点拟(意向)加S锁。锁。例例:要要对对某某个个元元组组加加S锁锁,则则要要首首先先对对关关系系和和数据库加数据库加IS锁锁意向锁(续)意向锁(续)lIX锁锁如果对一个数据对象加如果对一个数据对象加IX锁,表示它的后裔锁,表示它的后裔结点拟(意向)加结点拟(意向)加X锁。锁。例:要对某个元组加例:要对某个元组加X锁,则要首先对关系和锁,则要首先对关系和数据库加数据库加IX锁。锁

16、。意向锁(续)意向锁(续)lSIX锁锁如果对一个数据对象加如果对一个数据对象加SIX锁,表示对它加锁,表示对它加S锁,再加锁,再加IX锁,即锁,即SIX=S+IX。例:对某个表加例:对某个表加SIX锁,则表示该事务要读整锁,则表示该事务要读整个表(所以要对该表加个表(所以要对该表加S锁),同时会更新个锁),同时会更新个别元组(所以要对该表加别元组(所以要对该表加IX锁)。锁)。意向锁(续)意向锁(续)意向锁的相容矩阵意向锁的相容矩阵T1T2SXISIXSIX-SYNYNNYXNNNNNYISYNYYYYIXNNYYNYSIXNNYNNY-YYYYYY意向锁(续)意向锁(续)l锁的强度锁的强度锁

17、的强度是指它对其他锁的排斥程度锁的强度是指它对其他锁的排斥程度一个事务在申请封锁时以强锁代替弱锁是安一个事务在申请封锁时以强锁代替弱锁是安全的,反之则不然全的,反之则不然SIXXSIX-IS意向锁(续)意向锁(续)l具有意向锁的多粒度封锁方法具有意向锁的多粒度封锁方法申请封锁时应该按自上而下的次序进行;申请封锁时应该按自上而下的次序进行;释放封锁时则应该按自下而上的次序进行释放封锁时则应该按自下而上的次序进行例:事务例:事务T要对一个数据对象加锁,必须先对要对一个数据对象加锁,必须先对它的上层结点加意向锁它的上层结点加意向锁第八章第八章并发控制并发控制8.1并发控制概述并发控制概述8.2封锁封

18、锁8.3封锁协议封锁协议8.4活锁和死锁活锁和死锁8.5并发调度的可串行性并发调度的可串行性8.6两段锁协议两段锁协议8.7封锁的粒度封锁的粒度8.8Oracle的并发控制的并发控制8.9小结小结8.8Oracle的并发控制的并发控制lOracle采用封锁技术保证并发操作的采用封锁技术保证并发操作的可串行性可串行性lOracle锁的种类锁的种类字典锁字典锁数据锁(亦称数据锁(亦称DML锁)锁)1.字典锁字典锁lORACLEDBMS内部用于对字典表的封锁内部用于对字典表的封锁l由由DBMS在必要的时候自动加锁和释放锁,用在必要的时候自动加锁和释放锁,用户无权控制户无权控制l字典锁类型字典锁类型语

19、法分析锁语法分析锁DDL锁锁2.数据锁数据锁l数据锁类型数据锁类型共享锁(共享锁(S锁)锁)排它锁(排它锁(X锁)锁)行级共享锁(行级共享锁(RS锁)锁)行级排它锁(行级排它锁(RX锁)锁)共享行级排它锁(共享行级排它锁(SRX锁)锁)其中其中RS锁、锁、RX锁、锁、SRX锁实际上就是锁实际上就是IS锁、锁、IX锁、锁、SIX锁。锁。数据锁(续)数据锁(续)l封锁粒度封锁粒度行级行级表级表级数据锁(续)数据锁(续)数据锁的相容矩阵数据锁的相容矩阵T1T2SXRSRXSRX-SYNYNNYY=Yes,表示相容的请求,表示相容的请求XNNNNNYRSYNYYYYN=No,表示不相容的请求,表示不相

20、容的请求RXNNYYNYSRXNNYNNY-YYYYYY数据锁(续)数据锁(续)l数据封锁的两种方式数据封锁的两种方式数据封锁由系统控制,对用户是透明的数据封锁由系统控制,对用户是透明的允许用户用允许用户用LOCKTABLE语句显式对封锁语句显式对封锁对象加锁对象加锁数据锁(续)数据锁(续)lORACLE数据锁的特点数据锁的特点缺省情况下,读数据不加锁缺省情况下,读数据不加锁ORACLE通过回滚段(通过回滚段(RollbackSegment)来保证用户不读来保证用户不读“脏脏”数据和可重复读。数据和可重复读。优点:提高数据的并发度优点:提高数据的并发度数据锁(续)数据锁(续)l死锁死锁采用死锁

21、诊断与解除法采用死锁诊断与解除法周期性诊断系统中有无死锁周期性诊断系统中有无死锁存在死锁,则撤消执行更新操作次数最少存在死锁,则撤消执行更新操作次数最少的事务的事务第八章第八章并发控制并发控制8.1并发控制概述并发控制概述8.2封锁封锁8.3封锁协议封锁协议8.4活锁和死锁活锁和死锁8.5并发调度的可串行性并发调度的可串行性8.6两段锁协议两段锁协议8.7封锁的粒度封锁的粒度8.8Oracle的并发控制的并发控制8.9小结小结8.9小结小结l数据共享与数据一致性是一对矛盾数据共享与数据一致性是一对矛盾l数据库的价值在很大程度上取决于它所能提供的数据数据库的价值在很大程度上取决于它所能提供的数据

22、共享度。共享度。l数据共享在很大程度上取决于系统允许对数据并发操数据共享在很大程度上取决于系统允许对数据并发操作的程度。作的程度。l数据并发程度又取决于数据库中的并发控制机制数据并发程度又取决于数据库中的并发控制机制l另一方面,数据的一致性也取决于并发控制的程度。另一方面,数据的一致性也取决于并发控制的程度。施加的并发控制愈多,数据的一致性往往愈好。施加的并发控制愈多,数据的一致性往往愈好。小结(续)小结(续)l数据库的并发控制以事务为单位数据库的并发控制以事务为单位l数据库的并发控制通常使用封锁机制数据库的并发控制通常使用封锁机制两类最常用的封锁两类最常用的封锁l不同级别的封锁协议提供不同的

23、数据一致性保不同级别的封锁协议提供不同的数据一致性保证,提供不同的数据共享度。证,提供不同的数据共享度。三级封锁协议三级封锁协议小结(续)小结(续)l并发控制机制调度并发事务操作是否正确的判并发控制机制调度并发事务操作是否正确的判别准则是可串行性别准则是可串行性并发操作的正确性则通常由两段锁协议来保并发操作的正确性则通常由两段锁协议来保证。证。两段锁协议是可串行化调度的充分条件,但两段锁协议是可串行化调度的充分条件,但不是必要条件不是必要条件小结(续)小结(续)l对数据对象施加封锁,带来问题对数据对象施加封锁,带来问题l活锁:活锁:先来先服务先来先服务l死锁:死锁:预防方法预防方法一次封锁法一次封锁法顺序封锁法顺序封锁法死锁的诊断与解除死锁的诊断与解除超时法超时法等待图法等待图法小结(续)小结(续)l不同的数据库管理系统提供的封锁类型、封锁不同的数据库管理系统提供的封锁类型、封锁协议、达到的系统一致性级别不尽相同。但是协议、达到的系统一致性级别不尽相同。但是其依据的基本原理和技术是共同的。其依据的基本原理和技术是共同的。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁