《事务处理锁》PPT课件.ppt
《《事务处理锁》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《事务处理锁》PPT课件.ppt(74页珍藏版)》请在三一办公上搜索。
1、事务处理-锁,提纲,并发控制基于锁的协议两段锁协议多粒度封锁带来的问题恢复故障日志恢复,封锁的定义,封锁就是一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象使用要访问一个数据项R,事务Ti必须先申请对R的封锁,如果R已经被事务Tj加了不相容的锁,则Ti需要等待,直至Tj释放它的封锁,封锁的类型,排它锁(X锁,eXclusive lock)事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁;又称写锁申请对R的排它锁:lock-X(R)共享锁(S锁,Share lock)事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对
2、R的S锁请求可以成功;又称读锁申请对R的共享锁:lock-S(R),封锁的相容矩阵,两阶段封锁协议,Two-Phase Locking Protocol两阶段封锁协议内容增长阶段(Growing Phase)事务可以获得锁,但不能释放锁缩减阶段(Shrinking Phase)事务可以释放锁,但不能获得锁示例lock-S(A)lock-S(B)lock-X(C)unlock(A)unlock(C)unlock(B)遵从两段锁协议lock-S(A)unlock-S(A)lock-S(B)lock-X(C)unlock(C)unlock(B)不遵从两段锁协议,两阶段封锁协议,封锁点:事务获得其最后
3、封锁的时间事务调度等价于和它们的封锁点顺序一致的串行调度令T0,T1,Tn是参与调度S的事务集,如果Ti对数据项R加A型锁,Tj对数据项R加B型锁,且comp(A,B)=false,则称Ti先于Tj,记作TiTj,得到一个优先图设ti是Ti的封锁点,若TiTj,则titj若T0,T1,Tn不可串行化,则在优先图中存在环,不妨设为T0T1TnT0,则t0t1tnt0,矛盾,两阶段封锁协议,保持到事务结束时才释放的锁称作长锁在事务中途就可以释放的锁称作短锁,发生级联回滚,严格两阶段封锁协议,lock-S(A);read(A);A1:=A;unlock(A);lock-S(A);read(A);A1
4、:=A;unlock(A);commit;,lock-X(A)read(A);A:=A 1;write(A);commit;,T1,T2,不能保证可重复读,两阶段封锁+长X锁+S锁,强两阶段封锁协议,锁转换,带有锁转换的两段锁协议增长阶段可获得lock-S可获得lock-X可将lock-S升级为lock-X(upgrade)缩减阶段可释放lock-S可释放lock-X可将lock-X降级为lock-S(downgrade),封锁方法,直接封锁事务对它要进行存取的数据对象直接申请加锁,封锁方法,分层封锁数据对象从大到小有一种层次关系,当封锁了外层数据对象时也就意味着同时封锁了它的所有内层数据对象
5、,封锁粒度,封锁对象属性值、属性值几何、元组、关系、某索引项、整个索引、整个数据库、物理页、块封锁粒度大,则并发度低,封锁机构简单,开销小封锁粒度小,则并发度高,封锁机构复杂,开销高理想的情况是只封锁与规定的操作有关的的数据对象,这些数据对象称作事务的完整性相关域,SQL Server的封锁粒度,封锁粒度,意向(预约)封锁在分层封锁中,封锁了上层节点就意味着封锁了所有内层节点。如果有事务T1对某元组加了S锁,而事务T2对该元组所在的关系加了X锁,因而隐含地X封锁了该元组,从而造成矛盾引入意向锁I(Intend):当为某节点加上I锁,表明其某些内层节点已发生事实上的封锁,防止其它事务再去显式封锁
6、该节点I锁的实施是从封锁层次的根开始,依次占据路径上的所有节点,直至要真正进行显式封锁的节点的父节点为止,封锁粒度,相容矩阵,封锁粒度,IS锁如果对一个数据对象加IS锁,表示它的后裔节点拟(意向)加S锁例如,要对元组加S锁,则首先要对关系和数据库加IS锁IX锁如果对一个数据对象加IX锁,表示它的后裔节点拟(意向)加X锁例如,要对元组加X锁,则首先要对关系和数据库加IX锁,封锁粒度,更精细的相容矩阵,封锁粒度,SIX锁如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁例如对某个表加SIX锁,则表示该事务要读整个表(对该表加S锁),同时会更新个别元组(对该表加IX锁),封锁粒度,更精细的相容
7、矩阵,SQL Server中的锁类型,SQL Server中的锁类型,架构稳定性(Sch-S)锁与除了架构修改(Sch-M)锁模式之外的所有锁模式相兼容。架构修改(Sch-M)锁与所有锁模式都不兼容。大容量更新(BU)锁只与架构稳定性(Sch-S)锁及其它大容量更新(BU)锁相兼容。,键范围锁定,键范围锁定原理键范围锁定原理解决了幻像读并发问题键范围锁覆盖单个记录以及记录之间的范围,可以防止对事务访问的记录集进行幻像插入或删除键范围锁通过覆盖索引行和索引行之间的范围来工作(而不是锁定整个基础表的行)。因为第二个事务在该范围内进行任何行插入、更新或删除操作时均需要修改索引,而键范围锁覆盖了索引项
8、,所以在第一个事务完成之前会阻塞第二个事务的进行,键范围锁定,键范围锁模式键范围锁包括范围组件和行组件,范围表示保护两个连续索引项之间的范围的锁模式,行表示保护索引项的锁模式键范围锁模式由两部分组成。第一部分表示用于锁定索引范围(RangeT)的锁类型,第二部分表示用于锁定特定键(K)的锁类型。这两部分用下划线(_)连接,如 RangeT_K,键范围锁定,键范围锁模式兼容性矩阵,键范围锁定,键范围锁定,范围扫描查询为了确保范围扫描查询是可串行的,每次在同一事务中执行的相同查询应返回同样的结果。其它事务不能在范围扫描查询中插入新行,否则这些插入将成为幻像插入SELECT name FROM my
9、table WHERE name BETWEEN A AND C 键范围锁放置在与数据行范围(名称在值 Adam 和 Dale 之间的行)对应的索引项上,以防止添加或删除满足上述查询条件的新行。虽然此范围中的第一个名称是 Adam,但是此索引项的 RangeS_S 确保了以字母 A 开头的新名称(如 Abigail)不能添加在 Adam 之前。同样,Dale索引项的RangeS_S确保了以字母C开头的新名称(如 Clive)不能添加在 Carlos 之后RangeS_S 锁数量为 n+1,此处 n 是满足查询条件的行数,键范围锁定,单独提取不存在数据如果事务中的查询试图选择不存在的行,则以后在
10、相同的事务中发出这一查询时,必须返回相同的结果。不允许其它事务插入不存在的行SELECT name FROM mytable WHERE name=Bill键范围锁放置在对应于名称范围 Ben 到 Bing 之间的索引项上,因为名称 Bill 将插入到这两个相邻的索引项之间。RangeS_S 模式键范围锁放置在索引项 Bing 上。这样可以防止任何其它事务在索引项 Ben 和 Bing 之间插入值(如 Bill),键范围锁定,删除操作在事务中删除值时,在事务执行删除操作期间不必锁定值所属的范围。锁定删除的键值直至事务结束DELETE mytable WHERE name=Bob排它(X)锁放置
11、在对应于名称 Bob 的索引项上。其它事务可以在删除值 Bob 的前后插入或删除值。但是任何试图读取、插入或删除值 Bob 的事务将被阻塞,直到删除的事务提交或回滚为止,键范围锁定,插入操作在事务中插入值时,在事务执行插入操作期间不必锁定值所属的范围。锁定插入的键值直至事务结束INSERT mytable VALUES(Dan)RangeI_N 模式键范围锁放置在对应于名字David的索引项上以测试范围。如果已授权锁定,则插入Dan,并且排它(X)锁放置在值Dan上。RangeI_N仅对测试范围必需,而不在执行插入操作的事务期间保留。其它事务可以在Dan的前后插入或删除值。任何试图读取、插入或
12、删除值Dan的事务将被阻塞,直到插入的事务提交或回滚为止,锁的实现,read(D)if Ti 持有D上的锁thenread(D)elsebegin 如果需要,等待直到没有其它事务在D上的X锁授予Ti D上的S锁 read(D)end,锁的实现,write(D)if Ti 持有D上的X锁thenwrite(D)elsebegin 如果需要,等待直到没有其它事务在D上的任何锁如果Ti D持有D上的S锁thenupgrade(D)else授予Ti D上的X锁 write(D)end,锁的实现,锁管理器事务向锁管理器发送封锁的申请和释放请求锁管理器维护一个锁表记录锁的授予情况和处于等待状态的封锁请求锁
13、表锁表一般作为内存中的hash表,按被封锁对象的名字建立索引,锁的实现,黑矩形表示已被授予的锁,白色表示等待的封锁请求锁表同时记录锁的类型新的封锁请求加到对应请求队列的末尾,当封锁请求与前面的锁相容时被批注释放封锁时请求从队列中删除并检查后续请求是否满足如果事务放弃,所有授予的和等待的锁请求都被删除为提高效率,锁管理器会记录每个事务持有锁的情况,锁的实现,如何看待锁封锁资源表“Authors”、页面 23、码为“23812”的元组锁管理器对资源一无所知,它只是“memcmp()”,325658,5,Object ID,2:328,6,File#:Page#,2:328:11,9,File#:P
14、age#:Slot on Page,5,5,5,锁的实现,RID:8字节(File#,Page#,Slot#)除非删除或移到其他地方,否则RID保持不变;如果删除元组,RID可以重用RID可以作为封锁资源,固定的RID,聚集索引,聚集索引行可以由唯一的聚集码标识聚集码可以作为封锁资源,二级索引码和位置可以作为封锁资源,锁的实现,Read committed锁在读完即刻释放,下次读取可能会遇到修改或删除的元组,Repeatable read被读取的元组锁一直保持,下次读取可能会遇到插入的元组,Repeatable read被读取的元组以及扫描的范围锁一直保持,避免往扫描范围内插元组,锁的实现,锁
15、升级,行锁代价高、并发度高表锁代价低、并发度低,锁升级,锁升级锁升级是将众多细粒度锁转换为较少的粗粒度的锁的过程,以削减系统开销当事务超过它的升级极限时,系统自动将行锁和页锁升级为表锁例如,当事务从表中请求行时,系统获取受影响的行上的锁,并在包含这些行的页和表或者索引上放置更高级别的意向锁。当事务控制的锁数量超过了它的极限时,系统将表上的意向锁更改为更强的锁(例如,将意向排它(IX)锁更改为排它(X)锁)。获取更强的锁后,表事务持有的所有页级锁和行级锁都被释放,从而削减锁的开销,死锁(Deadlock),两个事务都封锁了一些数据对象,并相互等待对方释放另一些数据对象以便对其封锁,结果两个事务都
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 事务处理锁 事务处理 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5457769.html