数据库课件第八章并发控制.ppt_第1页
数据库课件第八章并发控制.ppt_第2页
数据库课件第八章并发控制.ppt_第3页
数据库课件第八章并发控制.ppt_第4页
数据库课件第八章并发控制.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章并发控制 8 1并发控制概述8 2封锁8 3封锁协议8 4活锁和死锁8 5并发调度的可串行性8 6两段锁协议8 7封锁的粒度8 8Oracle的并发控制8 9小结 8 6两段锁协议 两段锁协议的内容1 在对任何数据进行读 写操作之前 事务首先要获得对该数据的封锁2 在释放一个封锁之后 事务不再获得任何其他封锁 两段锁协议 续 两段 锁的含义事务分为两个阶段第一阶段是获得封锁 也称为扩展阶段 第二阶段是释放封锁 也称为收缩阶段 两段锁协议 续 例 事务1的封锁序列 SlockA SlockB XlockC UnlockB UnlockA UnlockC 事务2的封锁序列 SlockA UnlockA SlockB XlockC UnlockC UnlockB 事务1遵守两段锁协议 而事务2不遵守两段协议 两段锁协议 续 并行执行的所有事务均遵守两段锁协议 则对这些事务的所有并行调度策略都是可串行化的 所有遵守两段锁协议的事务 其并行执行的结果一定是正确的事务遵守两段锁协议是可串行化调度的充分条件 而不是必要条件可串行化的调度中 不一定所有事务都必须符合两段锁协议 两段锁协议 续 T1SlockB读B 2Y BXlockAA Y 1写回A 3UnlockBUnlockA T2SlockA等待等待等待等待等待SlockA读A 3Y AXlockBB Y 1写回B 4UnlockBUnlockA T1SlockB读B 2Y BUnlockBXlockAA Y 1写回A 3UnlockA T2SlockA等待等待等待等待SlockA读A 3X AUnlockAXlockBB X 1写回B 4UnlockB a 遵守两段锁协议 b 不遵守两段锁协议 T1SlockB读B 2Y BUnlockBXlockAA Y 1写回A 3UnlockA T2SlockA读A 2X AUnlockAXlockB等待XlockBB X 1写回B 3UnlockB c 不遵守两段锁协议 两段锁协议 续 两段锁协议与防止死锁的一次封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁 否则就不能继续执行 因此一次封锁法遵守两段锁协议但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁 因此遵守两段锁协议的事务可能发生死锁 两段锁协议 续 图8 7遵守两段锁协议的事务发生死锁 T1SlockB读B 2XlockA等待等待 T2SlockA读A 2XlockA等待 两段锁协议 续 两段锁协议与三级封锁协议两类不同目的的协议两段锁协议保证并发调度的正确性三级封锁协议在不同程度上保证数据一致性遵守第三级封锁协议必然遵守两段协议 第八章并发控制 8 1并发控制概述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封锁粒度 一 什么是封锁粒度二 选择封锁粒度的原则 一 什么是封锁粒度 X锁和S锁都是加在某一个数据对象上的封锁的对象 逻辑单元 物理单元例 在关系数据库中 封锁对象 逻辑单元 属性值 属性值集合 元组 关系 索引项 整个索引 整个数据库等物理单元 页 数据页或索引页 物理记录等 什么是封锁粒度 续 封锁对象可以很大也可以很小例 对整个数据库加锁对某个属性值加锁封锁对象的大小称为封锁的粒度 Granularity 多粒度封锁 multiplegranularitylocking 在一个系统中同时支持多种封锁粒度供不同的事务选择 8 7 1封锁粒度 一 什么是封锁粒度二 选择封锁粒度的原则 二 选择封锁粒度的原则 封锁的粒度越大 小 系统被封锁的对象少 多 并发度小 高 系统开销小 大 选择封锁粒度 考虑封锁机构和并发度两个因素对系统开销与并发度进行权衡 选择封锁粒度的原则 续 需要处理多个关系的大量元组的用户事务 以数据库为封锁单位 需要处理大量元组的用户事务 以关系为封锁单元 只处理少量元组的用户事务 以元组为封锁单位 8 7封锁的粒度 8 7 1封锁粒度8 7 2多粒度封锁8 7 3意向锁 8 7 2多粒度封锁 多粒度树以树形结构来表示多级封锁粒度根结点是整个数据库 表示最大的数据粒度叶结点表示最小的数据粒度 多粒度封锁 续 例 三级粒度树 根结点为数据库 数据库的子结点为关系 关系的子结点为元组 多粒度封锁协议 允许多粒度树中的每个结点被独立地加锁对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁在多粒度封锁中一个数据对象可能以两种方式封锁 显式封锁和隐式封锁 显式封锁和隐式封锁 显式封锁 直接加到数据对象上的封锁隐式封锁 由于其上级结点加锁而使该数据对象加上了锁显式封锁和隐式封锁的效果是一样的 对某个数据对象加锁时系统检查的内容 该数据对象有无显式封锁与之冲突所有上级结点检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突 由上级结点封锁造成的 所有下级结点看上面的显式封锁是否与本事务的隐式封锁 将加到下级结点的封锁 冲突 8 7封锁的粒度 8 7 1封锁粒度8 7 2多粒度封锁8 7 3意向锁 8 7 3意向锁 引进意向锁 intentionlock 目的提高对某个数据对象加锁时系统的检查效率 什么是意向锁 对任一结点加基本锁 必须先对它的上层结点加意向锁如果对一个结点加意向锁 则说明该结点的下层结点正在被加锁 意向锁 续 例 对任一元组r加锁 先关系R加意向锁事务T要对关系R加X锁 系统只要检查根结点数据库和关系R是否已加了不相容的锁 不需要搜索和检查R中的每一个元组是否加了X锁 常用意向锁 意向共享锁 IntentShareLock 简称IS锁 意向排它锁 IntentExclusiveLock 简称IX锁 共享意向排它锁 ShareIntentExclusiveLock 简称SIX锁 意向锁 续 IS锁如果对一个数据对象加IS锁 表示它的后裔结点拟 意向 加S锁 例 要对某个元组加S锁 则要首先对关系和数据库加IS锁 意向锁 续 IX锁如果对一个数据对象加IX锁 表示它的后裔结点拟 意向 加X锁 例 要对某个元组加X锁 则要首先对关系和数据库加IX锁 意向锁 续 SIX锁如果对一个数据对象加SIX锁 表示对它加S锁 再加IX锁 即SIX S IX 例 对某个表加SIX锁 则表示该事务要读整个表 所以要对该表加S锁 同时会更新个别元组 所以要对该表加IX锁 意向锁 续 意向锁的相容矩阵T1T2SXISIXSIX SYNYNNYXNNNNNYISYNYYYYIXNNYYNYSIXNNYNNY YYYYYY 意向锁 续 锁的强度锁的强度是指它对其他锁的排斥程度一个事务在申请封锁时以强锁代替弱锁是安全的 反之则不然 意向锁 续 具有意向锁的多粒度封锁方法申请封锁时应该按自上而下的次序进行 释放封锁时则应该按自下而上的次序进行例 事务T要对一个数据对象加锁 必须先对它的上层结点加意向锁 第八章并发控制 8 1并发控制概述8 2封锁8 3封锁协议8 4活锁和死锁8 5并发调度的可串行性8 6两段锁协议8 7封锁的粒度8 8Oracle的并发控制8 9小结 8 8Oracle的并发控制 Oracle采用封锁技术保证并发操作的可串行性Oracle锁的种类字典锁数据锁 亦称DML锁 1 字典锁 ORACLEDBMS内部用于对字典表的封锁由DBMS在必要的时候自动加锁和释放锁 用户无权控制字典锁类型语法分析锁DDL锁 2 数据锁 数据锁类型共享锁 S锁 排它锁 X锁 行级共享锁 RS锁 行级排它锁 RX锁 共享行级排它锁 SRX锁 其中RS锁 RX锁 SRX锁实际上就是IS锁 IX锁 SIX锁 数据锁 续 封锁粒度行级表级 数据锁 续 数据锁的相容矩阵T1T2SXRSRXSRX SYNYNNYY Yes 表示相容的请求XNNNNNYRSYNYYYYN No 表示不相容的请求RXNNYYNYSRXNNYNNY YYYYYY 数据锁 续 数据封锁的两种方式数据封锁由系统控制 对用户是透明的允许用户用LOCKTABLE语句显式对封锁对象加锁 数据锁 续 ORACLE数据锁的特点缺省情况下 读数据不加锁ORACLE通过回滚段 RollbackSegment 来保证用户不读 脏 数据和可重复读 优点 提高数据的并发度 数据锁 续 死锁采用死锁诊断与解除法周期性诊断系统中有无死锁存在死锁 则撤消执行更新操作次数最少的事务 第八章并发控制 8 1并发控制概述8 2封锁8 3封锁协议8 4活锁和死锁8 5并发调度的可串行性8 6两段锁协议8 7封锁的粒度8 8Oracle的并发控制8 9小结 8 9小结 数据共享与数据一致性是一对矛盾数据库的价值在很大程度上取决于它所能提供的数据共享度 数据共享在很大程度上取决于系统允许对数据并发操作的程度 数据并发程度又取决于数据库中的并发控制机制另一方面 数据的一致性也取决于并发控制的程度 施加的并发控制愈多 数据的一致性往往愈好 小结 续 数据库的并发控制以事务为单位数据库的并发控制通常使用封锁机制两类最常用的封锁不同级别的封锁协议提供不同的数据一致性保证 提供不同的数据共享度 三级封锁

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论