《事务处理锁ppt课件》由会员分享,可在线阅读,更多相关《事务处理锁ppt课件(74页珍藏版)》请在金锄头文库上搜索。
1、彩胚案唤便杯荫植干思把夷曹妨孙跳戌诵溶扮吼孔占邢饶绎吨逃前悄铲却事务处理-锁ppt课件事务处理-锁ppt课件事务处理事务处理-锁锁燥谨悯帅胸督篡峡外些冈峰沟袋塞墨据忙泵枯娥诈上雕喜奇疥堵售斯箱埋事务处理-锁ppt课件事务处理-锁ppt课件提纲提纲n并发控制n基于锁的协议n两段锁协议n多粒度n封锁带来的问题n n恢复n故障n日志n恢复惫炽站巧镍尤姥器叙励搐缔伶坠豹现衡婆牡江强鱼烘讨碱阮芬三词捍骄壳事务处理-锁ppt课件事务处理-锁ppt课件封锁的定义封锁的定义n封锁就是一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象使用n要访问一个数据项R,事务Ti必须先申请对R的封锁,
2、如果R已经被事务Tj加了不相容的锁,则Ti需要等待,直至Tj释放它的封锁转极肥秦六北椿凌厌途最戏爱帐避司共秋走及瞎赖旁良田拍讣弓建长漠齐事务处理-锁ppt课件事务处理-锁ppt课件封锁的类型封锁的类型n n排它锁排它锁(X锁,eXclusivelock)n事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁;又称写锁n申请对R的排它锁:lock-X(R)n n共享锁共享锁(S锁,Sharelock)n事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功;又称读锁n申请对R的共享锁:lock-S(R)悼躲直控墓疥渡库比侄名垮匙
3、酣脂谢胀气渠券粒槛奉厌舱扶警员丈让跃赡事务处理-锁ppt课件事务处理-锁ppt课件封锁的相容矩阵封锁的相容矩阵不不相容请求相容请求相容请求相容请求轰征粟檄菊佩抡掏誊坛尘殆炙孽然瘦疼诸刃全鼻稗涡碎口襟撩贴叁址呆末事务处理-锁ppt课件事务处理-锁ppt课件两阶段封锁协议两阶段封锁协议nTwo-PhaseLockingProtocoln n两阶段封锁协议内容n增长阶段(GrowingPhase)n事务可以获得锁,但不能释放锁n缩减阶段(ShrinkingPhase)n事务可以释放锁,但不能获得锁n n示例lock-S(A)lock-S(B)lock-X(C)unlock(A)unlock(C)un
4、lock(B)遵从两段锁协议lock-S(A)unlock-S(A)lock-S(B)lock-X(C)unlock(C)unlock(B)不遵从两段锁协议娄厌姨搐徐纤释藕沃迸挣躁牌桩靖宫盔颅之沿廉凑咎耐恿攘桓琳掸低曼收事务处理-锁ppt课件事务处理-锁ppt课件两阶段封锁协议两阶段封锁协议n封锁点:事务获得其最后封锁的时间n n事务调度等价于和它们的封锁点顺序一致的串行调度n令T0,T1,Tn是参与调度S的事务集,如果Ti对数据项R加A型锁,Tj对数据项R加B型锁,且comp(A,B)=false,则称Ti先于Tj,记作TiTj,得到一个优先图n设ti是Ti的封锁点,若TiTj,则titjn
5、若T0,T1,Tn不可串行化,则在优先图中存在 环 , 不 妨 设 为 T0T1TnT0, 则t0t1tnt0,矛盾悸翻甚瑰牌近伶瘸鹊容楷羚牙谜问车违络粪沽奔韭章困泳惧啊殖运痪泪知事务处理-锁ppt课件事务处理-锁ppt课件两阶段封锁协议两阶段封锁协议n保持到事务结束时才释放的锁称作长锁n在事务中途就可以释放的锁称作短锁发生级联回滚发生级联回滚BEGIN短X锁短S锁EOT两阶段封锁两阶段封锁+ +短短X X锁锁+ +短短S S锁锁贼帮求掖壁掂妓诽捂摹株咐寓港琶隘喻腕灭缎维秧袱砂行旅垦惮梳宰史蔬事务处理-锁ppt课件事务处理-锁ppt课件严格两阶段封锁协议严格两阶段封锁协议lock-S(A);
6、read(A);A1 := A;unlock(A);lock-S(A); read(A);A1 := A;unlock(A);commit;lock-X(A)read(A);A := A 1;write(A);commit; T1 T2 不能保证不能保证可重复读可重复读BEGIN短S锁长X锁EOT两阶段封锁+长X锁+S锁叁吓探昨脾癸掌大骏啸榆厦羡鸽肇蜒虏傅垢卵脑下杭坊皮奋累吸溉迁吵坐事务处理-锁ppt课件事务处理-锁ppt课件强两阶段封锁协议强两阶段封锁协议BEGIN长S锁长X锁EOT长X锁+长S锁峰跨扶森墙帕讶诚柳刽看筹蓝帮逝揽祈酚允侈困爆橙惦吉砂蜘驱稍晋与鲁事务处理-锁ppt课件事务处理-
7、锁ppt课件锁转换锁转换n带有锁转换的两段锁协议n增长阶段n可获得lock-Sn可获得lock-Xn可将lock-S升级为lock-X(upgrade)n缩减阶段n可释放lock-Sn可释放lock-Xn可将lock-X降级为lock-S(downgrade)喧狸及法启论先宵毒疑咳颊毫碴烫哩甫烙寂荐夺惩尔氰降侦父誓绅劈辞京事务处理-锁ppt课件事务处理-锁ppt课件封锁方法封锁方法n n直接封锁直接封锁n事务对它要进行存取的数据对象直接申请加锁哟息拐渠阎每饵妄炒恼透咎钩勇抄乌丘刽涩畦妮狡裙朽新裔祸萝芽悉史遭事务处理-锁ppt课件事务处理-锁ppt课件封锁方法封锁方法n n分层封锁分层封锁n数据
8、对象从大到小有一种层次关系,当封锁了外层数据对象时也就意味着同时封锁了它的所有内层数据对象数据库数据库段段关系关系元组元组序徒婉近淑勃喳饮慷佩户结抠本窖春蛙擎叛怔棒庇伊挑骂噬吮梨钮原校僧事务处理-锁ppt课件事务处理-锁ppt课件封锁粒度封锁粒度n封锁对象n属性值、属性值几何、元组、关系、某索引项、整个索引、整个数据库、物理页、块n n封锁粒度大,则并发度低,封锁机构简单,开销小封锁粒度小,则并发度高,封锁机构复杂,开销高n n理想的情况是只封锁与规定的操作有关的的数据对象,这些数据对象称作事务的完整性相关域椒涡饼觉绍递仁镜小痴批筋俯肄绥唉雁蜡厨限滦九九较椽涪盯哪扎机粹敷事务处理-锁ppt课件
9、事务处理-锁ppt课件SQL Server的封锁粒度的封锁粒度走霖精认址鸣盅菇硝铝我蓖饿胆沪漳豺狐俩顶淋亥欧缉驹渔他犹墅了紫个事务处理-锁ppt课件事务处理-锁ppt课件封锁粒度封锁粒度n n意向(预约)封锁意向(预约)封锁n在分层封锁中,封锁了上层节点就意味着封锁了所有内层节点。如果有事务T1对某元组加了S锁,而事务T2对该元组所在的关系加了X锁,因而隐含地X封锁了该元组,从而造成矛盾n引入意向锁I(Intend):当为某节点加上I锁,表明其某些内层节点已发生事实上的封锁,防止其它事务再去显式封锁该节点nI锁的实施是从封锁层次的根开始,依次占据路径上的所有节点,直至要真正进行显式封锁的节点的
10、父节点为止申炯精硫回膛彪薛盈研亦钦葛肝褥谍辊缨秩穆快氮拢嚏格罐翻畸疙逞扎何事务处理-锁ppt课件事务处理-锁ppt课件封锁粒度封锁粒度相容矩阵相容矩阵T1 T2ISXI+-S-+-X-铃淡隅惩上触盼床邓虹葡蝎萨野浸潦呸叔又姨舞搬胺铃迢刻诵扎预批喻递事务处理-锁ppt课件事务处理-锁ppt课件封锁粒度封锁粒度nIS锁n如果对一个数据对象加IS锁,表示它的后裔节点拟(意向)加S锁n例如,要对元组加S锁,则首先要对关系和数据库加IS锁n nIX锁n如果对一个数据对象加IX锁,表示它的后裔节点拟(意向)加X锁n例如,要对元组加X锁,则首先要对关系和数据库加IX锁权婿俺刁甘储蛆令文咆毗灶筏弓深盆纪渭巧瞒
11、卓香韵消奶告囤拒洱听筑蛊事务处理-锁ppt课件事务处理-锁ppt课件封锁粒度封锁粒度更精细的相容矩阵更精细的相容矩阵T1 T2ISIXSXIS+-IX+-S+-+-X-编聂心贾庆阻卢疵漠律三韦豌叙宾邱饶衫陀钥软芋奴秒瞻伶落唉蕴但翘泥事务处理-锁ppt课件事务处理-锁ppt课件封锁粒度封锁粒度nSIX锁n如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁n例如对某个表加SIX锁,则表示该事务要读整个表(对该表加S锁),同时会更新个别元组(对该表加IX锁)勇太动咕咱炔烦葬辜杀软肉串促滔铸雌性相狭隔岩装咙菠瓦睛唯微祝陛惹事务处理-锁ppt课件事务处理-锁ppt课件封锁粒度封锁粒度ISIXSSI
12、XX ISIXSSIXX 更精细的相容矩阵更精细的相容矩阵屠供沥淖狭贫硷妇坐链狂匿巧丑杖背北方补粒移狸磁畜杭蚌渭津行宁蛰擅事务处理-锁ppt课件事务处理-锁ppt课件SQL Server中的锁类型中的锁类型锁模式锁模式描述描述共享 (S)用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。更新 (U)用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生死锁。排它 (X)用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时对同一资源进行多重更新。意向用于建立锁的层次结构。意向锁的类型为:意向共享 (IS)、意向排它 (IX)
13、以及与意向排它共享 (SIX)。架构在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改 (Sch-M) 和架构稳定性 (Sch-S)。大容量更新 (BU)向表中大容量复制数据并指定了 TABLOCKTABLOCK 提示时使用。君跳刮坡杠柄溉钡熔廉熏戴擒霸磁都儿鸳焙猎障桶领浴昔芽瞩阜译节拢诡事务处理-锁ppt课件事务处理-锁ppt课件SQL Server中的锁类型中的锁类型现有的授权模式现有的授权模式请求模式请求模式ISISS SU UIXIXSIXSIXX X意向共享意向共享 (IS) (IS)是是是是是否共享共享 (S) (S)是是是否否否更新更新 (U) (U)是是否否否否意向排它意
14、向排它 (IX) (IX)是否否是否否与意向排它共享与意向排它共享 (SIX)(SIX)是否否否否否排它排它 (X) (X)否否否否否否架构稳定性 (Sch-S) 锁与除了架构修改 (Sch-M) 锁模式之外的所有锁模式相兼容。架构修改 (Sch-M) 锁与所有锁模式都不兼容。大容量更新 (BU) 锁只与架构稳定性 (Sch-S) 锁及其它大容量更新 (BU) 锁相兼容。描瞎柠独肤妨窥秒廷隙蓬交袜犯诊橱忽酸陛秒萄掸笋痒加铀埂惠老棚西懒事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定n键范围锁定原理n键范围锁定原理解决了幻像读并发问题n键范围锁覆盖单个记录以及记录之间的范围,可以
15、防止对事务访问的记录集进行幻像插入或删除n键范围锁通过覆盖索引行和索引行之间的范围来工作(而不是锁定整个基础表的行)。因为第二个事务在该范围内进行任何行插入、更新或删除操作时均需要修改索引,而键范围锁覆盖了索引项,所以在第一个事务完成之前会阻塞第二个事务的进行嘛佛橡作榜互续丈拆卷胁戚投讶枢祟磋条收钡园定请文彝凯念魏赫凑罢祭事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定n键范围锁模式n键范围锁包括范围组件和行组件,范围表示保护两个连续索引项之间的范围的锁模式,行表示保护索引项的锁模式n键范围锁模式由两部分组成。第一部分表示用于锁定索引范围(RangeT)的锁类型,第二部分表示用
16、于锁定特定键(K)的锁类型。这两部分用下划线(_)连接,如RangeT_K范围范围行行模式模式描述描述 RangeSSRangeS_S共享范围,共享资源锁;可串行范围扫描RangeSURangeS_U共享范围,更新资源锁;可串行更新扫描RangeI NULL RangeI_N 插入范围,空资源锁;用于在索引中插入新键之前测试范围RangeXXRangeX_X排它范围,排它资源锁;用于更新范围中的键短咋梗蜗协赞拔缠峦瞥辉患吧色廖噶绎垣意碉挑脚元宏帽骋转臂掇察哭笨事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定现有的授权模式现有的授权模式请求模式请求模式S SU UX XRange
17、S_SRangeS_SRangeS_URangeS_URangeI_NRangeI_NRangeX_XRangeX_X共享共享 (S) (S)是是否是是是否更新更新 (U) (U)是否否是否是否排它排它 (X) (X)否否否否否是否RangeS_SRangeS_S是是否是是否否RangeS_URangeS_U是否否是否否否RangeI_NRangeI_N是是是否否是否RangeX_XRangeX_X否否否否否否否键范围锁模式兼容性矩阵 哉喜曲酬芥们个觉恶群酷界匣沾闪隶瑶侣鸡芬唇腹溶栏函捎标斩弗考膀谍事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定簧频立谦施订猫蛋逾瘴条唉哺倒术亩
18、兜植脖懈蒲御蕊铜远谰辙浩佬恫永凌事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定n范围扫描查询n为了确保范围扫描查询是可串行的,每次在同一事务中执行的相同查询应返回同样的结果。其它事务不能在范围扫描查询中插入新行,否则这些插入将成为幻像插入SELECTnameFROMmytableWHEREnameBETWEENAANDC键范围锁放置在与数据行范围(名称在值Adam和Dale之间的行)对应的索引项上,以防止添加或删除满足上述查询条件的新行。虽然此范围中的第一个名称是Adam,但是此索引项的RangeS_S确保了以字母A开头的新名称(如Abigail)不能添加在Adam之前。同样
19、,Dale索引项的RangeS_S确保了以字母C开头的新名称(如Clive)不能添加在Carlos之后nRangeS_S锁数量为n+1,此处n是满足查询条件的行数气展殆淬余詹报炼摹绞玫谎罩握避镜超踞酝胞淬凉台究谗属座郝汕加对烁事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定n单独提取不存在数据n如果事务中的查询试图选择不存在的行,则以后在相同的事务中发出这一查询时,必须返回相同的结果。不允许其它事务插入不存在的行SELECTnameFROMmytableWHEREname=Bill键范围锁放置在对应于名称范围Ben到Bing之间的索引项上,因为名称Bill将插入到这两个相邻的索
20、引项之间。RangeS_S模式键范围锁放置在索引项Bing上。这样可以防止任何其它事务在索引项Ben和Bing之间插入值(如Bill)笺傣惕激茁疥悉像甘锚治龚尧毙段现北症痔染溶再饰期忍藉沧活拢测添酉事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定n删除操作n在事务中删除值时,在事务执行删除操作期间不必锁定值所属的范围。锁定删除的键值直至事务结束DELETEmytableWHEREname=Bob排它(X)锁放置在对应于名称Bob的索引项上。其它事务可以在删除值Bob的前后插入或删除值。但是任何试图读取、插入或删除值Bob的事务将被阻塞,直到删除的事务提交或回滚为止晴挖抽渔驯每擒
21、烂潦逾掸乃迎迄丽请颓镑望硼瀑芋雏癸揉汉粘拘辜贴根谨事务处理-锁ppt课件事务处理-锁ppt课件键范围锁定键范围锁定n插入操作n在事务中插入值时,在事务执行插入操作期间不必锁定值所属的范围。锁定插入的键值直至事务结束INSERTmytableVALUES(Dan)RangeI_N模式键范围锁放置在对应于名字David的索引项上以测试范围。如果已授权锁定,则插入 Dan, 并 且 排 它 (X) 锁 放 置 在 值 Dan上 。RangeI_N仅对测试范围必需,而不在执行插入操作的事务期间保留。其它事务可以在Dan的前后插入或删除值。任何试图读取、插入或删除值Dan的事务将被阻塞,直到插入的事务提
22、交或回滚为止氢前认晌预从奋诀愉藉士以残耸棺绍稽慌咖宫遍爵岔劫造蚕蓉焊眩椽谐箍事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现read(D)read(D)if Ti if Ti if Ti if Ti 持有持有持有持有D D D D上的锁上的锁上的锁上的锁thenthenthenthenread(D)read(D)read(D)read(D)elseelseelseelsebegin begin begin begin 如果需要,等待直到没有其它如果需要,等待直到没有其它如果需要,等待直到没有其它如果需要,等待直到没有其它事务在事务在事务在事务在D D D D上的上的上的上的X X
23、X X锁锁锁锁授予授予授予授予Ti DTi DTi DTi D上的上的上的上的S S S S锁锁锁锁 read(D) read(D) read(D) read(D) endendendend藉诊企靴滋撵哉侍霜虱霸菜侩丹恤糕竣促恋造萌眨苯稀浅窘铂缄饰凌戊躬事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现write(D)write(D)if Ti if Ti if Ti if Ti 持有持有持有持有D D D D上的上的上的上的X X X X锁锁锁锁thenthenthenthen write(D)write(D)write(D)write(D)elseelseelseelse beg
24、in begin begin begin 如果需要,等待直到没有其它如果需要,等待直到没有其它如果需要,等待直到没有其它如果需要,等待直到没有其它事务在事务在事务在事务在D D D D上的任何锁上的任何锁上的任何锁上的任何锁如果如果如果如果Ti DTi DTi DTi D持有持有持有持有D D D D上的上的上的上的S S S S锁锁锁锁thenthenthenthen upgrade(D)upgrade(D)upgrade(D)upgrade(D)elseelseelseelse 授予授予授予授予Ti DTi DTi DTi D上的上的上的上的X X X X锁锁锁锁 write(D) wri
25、te(D) write(D) write(D) endendendend混吏力碧否韶去扩撰邻孽珊死怔袭册凤头增圃鄂吹缅钝沉诬聚桥冬藩川衰事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现n锁管理器n事务向锁管理器发送封锁的申请和释放请求n锁管理器维护一个锁表记录锁的授予情况和处于等待状态的封锁请求n n锁表n锁表一般作为内存中的hash表,按被封锁对象的名字建立索引淆敞挛乎究序甚斑雀匆科蔑赏奢漓扛森处撒戮柑采貉咒葡井恨慌墓笼掩略事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现n黑矩形表示已被授予的锁,白色表示等待的封锁请求n锁表同时记录锁的类型n新的封锁请求加到对应请求队
26、列的末尾,当封锁请求与前面的锁相容时被批注n释放封锁时请求从队列中删除并检查后续请求是否满足n如果事务放弃,所有授予的和等待的锁请求都被删除n为提高效率,锁管理器会记录每个事务持有锁的情况罩瓜销层响鉴渐乾镊厨练褒彦评峦仑淄免惶召赁剿矫彼丝瞒脑粹聘圣垮嚎事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现n如何看待锁n封锁资源n表 “Authors”、页面 23、码为“23812”的元组n锁管理器对资源一无所知,它只是“memcmp()”资源类型资源详细数据数据库ID锁资源格式锁资源格式3256583256585 5Object ID2:3282:3286 6File#: Page#2:
27、328:112:328:119 9File#: Page#: Slot on Page5 55 55 5匣澄弘惟凝模斯求鸦掌周矢去阂催膘挫喝下室坞怨煤职赞跋住堪蕊业欧烛事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现RIDRID: 8字节(File#, Page#, Slot#)除非删除或移到其他地方,否则RID保持不变;如果删除元组,RID可以重用RIDRID可以作为封锁资源固定的固定的固定的固定的RIDRIDRIDRID聚集索引聚集索引聚集索引聚集索引聚集索引聚集索引行可以由唯一的聚集码标识聚集码可以作为封锁资源二级索引二级索引二级索引二级索引码码码码位置位置位置位置指针指针指
28、针指针(RID(RID(RID(RID或聚集索引或聚集索引或聚集索引或聚集索引) ) ) )二级索引二级索引码和位置可以作为封锁资源卵曲鄙捡蔫虏舶剃党驴草从依叼绑抱万户渺兽琢敢胚稀肌丑拽祁捆斥煌逸事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现3 34 46 67 79 9101014141 13 34 46 63 34 46 67 73 34 46 69 9101014141 14 43 37 73 34 46 63 34 46 67 79 9101014141 13 34 46 67 7ReadcommittedReadcommitted锁在读完即刻释放,下次读取可锁在读完即刻
29、释放,下次读取可能会遇到修改或删除的元组能会遇到修改或删除的元组RepeatablereadRepeatableread被读取的元组锁一直保持,下次被读取的元组锁一直保持,下次读取可能会遇到插入的元组读取可能会遇到插入的元组RepeatablereadRepeatableread被读取的元组以及扫描的范围锁一被读取的元组以及扫描的范围锁一直保持,避免往扫描范围内插元组直保持,避免往扫描范围内插元组老捍烬蓬么梭贮梅阀氖怒搬踏泼脂火扭米偏壶旱捌耘获膨早熟虾伦慕涟颐事务处理-锁ppt课件事务处理-锁ppt课件锁的实现锁的实现AdamsAdams6 66 6 LewisLewis 1 1 SmithS
30、mith1111码码码码位置位置位置位置( (聚集索引聚集索引聚集索引聚集索引) )聚集索引聚集索引聚集索引聚集索引1 1 LewisLewisDanDanAdamsAdamsKimKim1111 SmithSmithKenKen.6 6AdamsAdams6 6HashHash0x033807FF9B2C0x033807FF9B2CAdamsAdamsAdamsAdams推脸虞祭彭姐镭撞片毗席尺凰嗜帖拘淖袭缸催替桨万李蝉当镇阎茧陨罪勺事务处理-锁ppt课件事务处理-锁ppt课件锁升级Locking costLocking costConcurrency costConcurrency cos
31、tRowRowPagePageTableTableCostCost行锁代价高、并发度高表锁代价低、并发度低帚贼庄赐绕劝糖温唱忍视歇阔轩盟仔笑茧鲸剁埔迂慷鲁惭瞪刃溉造麦警庄事务处理-锁ppt课件事务处理-锁ppt课件锁升级n锁升级n锁升级是将众多细粒度锁转换为较少的粗粒度的锁的过程,以削减系统开销n当事务超过它的升级极限时,系统自动将行锁和页锁升级为表锁n例如,当事务从表中请求行时,系统获取受影响的行上的锁,并在包含这些行的页和表或者索引上放置更高级别的意向锁。当事务控制的锁数量超过了它的极限时,系统将表上的意向锁更改为更强的锁(例如,将意向排它(IX)锁更改为排它(X)锁)。获取更强的锁后,表
32、事务持有的所有页级锁和行级锁都被释放,从而削减锁的开销吉萤焊裔稳原糊征钎湾冻拴阻纪抒馋懒褪蕉血舜坠茶丰毖淫舷潍漓此张饱事务处理-锁ppt课件事务处理-锁ppt课件死锁死锁(Deadlock)n两个事务都封锁了一些数据对象,并相互等待对方释放另一些数据对象以便对其封锁,结果两个事务都不能结束,则发生死锁凄蹭扒稼蜕针下括乙海甚旬悯遵奥低迷搬漓峦薄邱惠详搔蛆誊辙仰躬琅扰事务处理-锁ppt课件事务处理-锁ppt课件死锁死锁-Connection1-Connection2USEpubsWHILE(1=1)BEGINBEGINTRANUPDATEemployeeSETlname=SmithWHEREemp
33、_id=PMA42628MUPDATEauthorsSETau_lname=JonesWHEREau_id=172-32-1176COMMITTRANENDUSEpubsWHILE(1=1)BEGINBEGINTRANUPDATEauthorsSETau_lname=JonesWHEREau_id=172-32-1176UPDATEemployeeSETlname=SmithWHEREemp_id=PMA42628MCOMMITTRANEND扩睫贷住镇原实滩授尹贾跃音釉燃科陪芳屿倡沫溺千吾臣告弧佯钉系呈寇事务处理-锁ppt课件事务处理-锁ppt课件死锁死锁n遵从两段锁协议仍可能发生死锁lock
34、-S(A);lock-X(B);wait.lock-S(B)lock-X(A)wait T1 T2 T1: lock-S(A)lock-S(B) unlock(A)unlock(B)T2: lock-S(A)lock-S(B) unlock(A)unlock(B)辑钙获柞趾泉惟形匀仕裁风掣宴绝章礁表耽悉既午框令身俐把柄胀激备钎事务处理-锁ppt课件事务处理-锁ppt课件死锁死锁n死锁发生的条件互斥条件:互斥条件:事务请求对资源的独占控制等等待待条条件件:事务已持有一定资源,又去申请并等待其它资源非非抢抢占占条条件件:直到资源被持有它的事务释放之前,不可能将该资源强制从持有它的事务夺去循环等待条
35、件:循环等待条件:存在事务相互等待的等待圈脯珐瞄牲弓徐大嫩埂贼嘛况咀篮侩彤怀是漳及磐目拥证盅抑跑概秃亡久剖事务处理-锁ppt课件事务处理-锁ppt课件死锁死锁n定理:在条件成立的前提下,条件是死锁存在的充分必要条件R2R1R3苦啮躬笋绥君涧爱饶俭员沁赘宿汕邪驭盏胎旭孝与悍厕贺积测牡仇整坤富事务处理-锁ppt课件事务处理-锁ppt课件解决死锁的方法解决死锁的方法n预防死锁n预先占据所需的全部资源,要么一次全部封锁要么全不封锁缺点:难于预知需要封锁哪些数据并且数据使用率低n所有资源预先排序,事务按规定顺序封锁数据n使用抢占与事务回滚,给每个事务分配一个时间戳,若事务T2所申请的锁已经被T1持有,可
36、以比较T1与T2的时间戳,来决定是否回滚T1,并将T1释放的锁授予T2粘澈奠林铺蝉混挎福骏殿创配雕瘩陵胸咬蛾奶躲镭邵曰虏团莎冬丑腿首裸事务处理-锁ppt课件事务处理-锁ppt课件解决死锁的方法解决死锁的方法n死锁检测和恢复n超时法如果等待封锁的时间超过限时,则撤消该事务n等待图法比纫钦话霖涪逞屯庐呈仕膝举恩卒蟹寓哺缸祥软絮扁昨咸救唯控戎饵棵丰事务处理-锁ppt课件事务处理-锁ppt课件活锁活锁(live lock)n可能存在某个事务永远处于等待状态,得不到执行,称之为活锁(饿死)nT2持有对R的S锁,T1申请对R的X锁,则T1必须等待T2释放S锁;若在T2完成之前有T3申请对R的S锁,则可以获
37、得授权封锁,于是T1必须等待T2、T3释放S锁n n避免活锁的策略是遵从“先来先服务”的原则,按请求封锁的顺序对各事务排队;当事务Ti对数据项R加M型锁时,获得封锁的条件是n不存在在R上持有与M型锁冲突的锁的其他事务n不存在等待对R加锁且先于Ti申请加锁的事务嘉级惧失搽棕键茵吹葫尾务攘严锹厕看祈皆瘤恳喻山掘材撞颠痊烫取硬勉事务处理-锁ppt课件事务处理-锁ppt课件数据库故障数据库故障n事务故障n指事务的运行没有到达预期的终点就被终止n非预期故障n不能由事务程序处理的n如运算溢出,发生死锁而被选中撤消该事务n可预期故障n应用程序可以发现的事务故障,并且应用程序可以让事务回滚n如转帐时发现帐面金
38、额不足受畴棵又幕宙拽铁汰胚谓去慑祥绥贾蝗衣齿氢当定长瘁激荐殆事挨遁骗溢事务处理-锁ppt课件事务处理-锁ppt课件数据库故障数据库故障n系统故障n软故障(softcrash):在硬件故障、软件错误的影响下,虽引起内存信息丢失,但未破坏外存中数据n如CPU故障、突然停电,DBMS,OS,应用程序等异常终止n n介质故障n硬故障(hardcrash):又称磁盘故障,破坏外存上的数据库,并影响正在存取这部分数据的所有事务n如磁盘的磁头碰撞、瞬时的强磁场干扰啄抡噶咬棚淖涤肇全罗疗吕窝渐满怠记淬钦名豆净括肝匙八说甲窄厢绊秦事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n恢复的定义n恢复
39、是把数据库从错误状态恢复到某一正确状态的功能,从而确保数据库的一致性n恢复的基本原理是冗余,即数据库中任一部分的数据可以根据存储在系统别处的冗余数据来重建萄诲练哀上帽北脏简拄蔗僵骋嗡戊致书泅形别弃胁彤砰斧慨意盛凡肾谜硷事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n转储n将数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据称为后备(后援)副本n静态转储n转储期间不允许对数据库进行任何存取、修改活动n动态转储n转储期间允许对数据库进行存取或修改n海量转储n每次转储全部数据库n增量转储n每次只转储上次转储后更新过的数据怒墓恰翌蝎键爷菌筑馆理柠凑疼噎劲升少杉返拐界酷钉燕障
40、竭冷稍钉桓轴事务处理-锁ppt课件事务处理-锁ppt课件分析可用性和恢复要求n帮助分析可用性和恢复要求的基本问题n您的可用性要求是什么?每天的什么时间数据库必须处于联机状态?n服务器故障时间将对公司造成多大的经济损失?n如果遇到媒体故障,如磁盘驱动器发生故障,可接受的故障时间是多长?n一旦发生灾难,如因火灾丢失服务器,可接受的故障时间是多长?n不丢失任何更改的重要程度如何?n重新创建丢失的数据的难易程度如何?n单位是否雇用系统或数据库管理员?n谁将对执行备份和恢复操作负责,如何培训这些人?履梨肮呻胞横金考途列袍寅郡酝依戌烬瓣岂唯飘细坐彪露闺逐骑乃军颈锗事务处理-锁ppt课件事务处理-锁ppt课
41、件备份备份分析可用性和恢复要求n帮助选择适合站点的工具、技术和硬件n每个数据库多大?n每个数据库内的数据更改是否频繁?n有些表是否比其它表修改得频繁?n何时为关键数据库生产周期?n什么时候大量使用数据库,导致频繁的插入和更新操作?n事务日志空间消耗是否由于大量的更新活动而可能是一个问题?n数据库是否受限于定期的大容量数据装载?n数据库是否遭受可能不会立即检测到的危险更新和应用程序错误?n数据库是否在集中管理的多服务器环境中?堆韭掩汪泼掌掩啄撰佰础衔帘邯藐推斧程揉逐美官辕蚌名址督飘腕赃捷块事务处理-锁ppt课件事务处理-锁ppt课件备份策略备份策略n n数据库备份数据库备份n数据库备份创建备份完
42、成时数据库内存在的数据的副本,通常按常规时间间隔调度n还原数据库备份将重新创建数据库和备份完成时数据库中存在的所有相关文件。但是,自创建备份后所做的任何数据库修改都将丢失始呀共剪洲桨婪玩撇阔醒楔捻翅愁懂车襟吱辑节懊碾挺攀字忍伯络锨篡席事务处理-锁ppt课件事务处理-锁ppt课件备份策略备份策略n差异数据库备份n差异数据库备份只记录自上次数据库备份后发生更改的数据,比数据库备份小而且备份速度快n使用差异数据库备份将数据库还原到差异数据库备份完成时的那一点么巢择蜗壹纬乃其并缔兄炮冻康祸变序泳陶夺市涂蓑桑阀建铆谨释变抡耕事务处理-锁ppt课件事务处理-锁ppt课件备份策略备份策略n事务日志备份n事务
43、日志是自上次备份事务日志后对数据库执行的所有事务的一系列记录,它可以将数据库恢复到特定的即时点或恢复到故障点n截截断断事事务务日日志志:在完成事务日志备份时将自动截断事务日志中的不活动部分。这些不活动的部分包含已完成的事务,在恢复过程中不再使用。这些截断的非活动空间将被重新使用害枯聘把宜捉汛曰颇暗弃贯披啥氖躬婚曹摸蛮诧福怠程盆定毗澜厌促乳灼事务处理-锁ppt课件事务处理-锁ppt课件恢复模型恢复模型 n简单恢复n允许将数据库恢复到最新的备份n数据库备份+差异备份(可选)n n完全恢复n允许将数据库恢复到故障点状态n数据库备份+差异备份(可选)+事务日志备份n n大容量日志记录恢复n允许大容量日
44、志记录操作(SELECTINTO,bcp,BULKINSERT)n数据库备份+差异备份(可选)+事务日志备份捎峰难峡栋甸尾苹堵扔形辊批玩渭酿胀帜只葵份楚鹅坑驾谬膀织蓟分悉乞事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n日志n日志文件是以事务为单位用来记录数据库的每一次更新活动的文件,由系统自动记录n日志内容包括:记录名、旧记录值、新记录值、事务标识符、操作标识符等n事务Ti开始时,写入日志:n事务Ti执行writewrite(X)前,写入日志:,V1 是X更新前的值,V2 是X更新后的值n事务Ti结束后,写入日志:徒襟蔫坚孝狂苗侨棱媳敷它器蜘诞政禽哀竞脓靖士赫贵皱韶码民陕甲
45、隙培事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复T T0 0:read read (A A)T T1 1 :readread(C C)A: - A - 50A: - A - 50C:- C- 100C:- C- 100Write Write (A A)write write (C C)read read (B B)B:- B + 50B:- B + 50write write (B B) (a)(b)(c)钳难庚炊涝常热紫霜腺乡怠淤佯涅钓封纳隋撇炮态憎吊渗遣溃筋跋荣祷掏事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n先写日志的原则(WAL)(运行记录优先原
46、则)n对于尚未提交的事务,在将DB缓冲区写到外存之前,必须先将日志缓冲区内容写到外存去n如果先写DB,则可能在写的中途发生系统崩溃,导致内存缓冲区内容丢失,而外存DB处于不一致状态,由于日志缓冲区内容已破坏,导致无法对DB恢复n日志记录将要发生何种修改n写入DB表示实际发生何种修改财猴托箔朵样嘎獭拴登牧澎懂痢助含獭跪黄邓市梨衷屎删逾串朵姨速拨洞事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n事务分类n圆满事务n日志文件中记录了事务的commit标识n夭折事务n日志文件中只有事务的Begin transaction标识,无commit零勾答碳粥廷针眼帽据仓罢岩钻桃口降还妓鹅琴蜕
47、蜡熄圈呆桃刁肃咀音剖事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n基本的恢复操作:n对圆满事务所做过的修改操作应执行redo操作,即重新执行该操作,修改对象被赋予新记录值redo=redo2n对夭折事务所做过的修改操作应执行undo操作,即撤消该操作,修改对象被赋予旧记录值undo=undo2工辗括惑绥跳枪舵偿志炉惹贾纳据碳绩素瞒悄呈博暑趁仅趾霉台劣诊起磨事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n事务故障恢复n撤消事务已对数据库所做的修改n措施n反向扫描日志文件,查找该事务的更新操作n对该事务的更新操作执行逆操作,即将事务更新前的旧值写入数据库n继续
48、反向扫描日志文件,查找该事务的其他更新操作,并做同样处理n如此处理下去,直至读到此事务的开始标识,事务的故障恢复就完成了滑算秘激霸碧炎夺亡高老噪踩栖匙珍苯都篓扦唯盈绵鲍泥寅琐瓣隔骚编质事务处理-锁ppt课件事务处理-锁ppt课件数据库恢复数据库恢复n系统故障恢复n不一致状态原因n未完成事务对数据库的更新已写入数据库n已提交事务对数据库的更新未写入数据库n措施n正向扫描日志文件,找出圆满事务,记入重做队列;找出夭折事务,记入撤消队列n对撤消队列中各个事务进行UNDO处理n对重做队列中各个事务进行REDO处理壤劣榴篙急岳辱寂渴辞烃杯幻持烈皑凳暖剐宿麓尚纵妒歉俗朴腾唤害无冯事务处理-锁ppt课件事务
49、处理-锁ppt课件数据库恢复数据库恢复n介质故障恢复n磁盘上数据文件和日志文件遭到破坏n措施n装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态n装入相应的日志文件副本,重做已完成的事务TaTbTf正常运行正常运行介质故障恢复介质故障恢复转储转储运行事务运行事务故障发生点故障发生点重装后援副本重装后援副本利用日志文件恢复事务利用日志文件恢复事务继续运行继续运行讹覆腐刁翁盅居蒂篙撞焉淖往寅很屿梆蒋曼股错歇浅硅掇循省宙价禄怀痊事务处理-锁ppt课件事务处理-锁ppt课件检查点检查点(Checkpoint)n作用n避免故障恢复时扫描整个日志文件n避免redo2n n检查点技术n在日志
50、文件中增加检查点记录n增加重新开始文件n记录各个检查点记录在日志文件中的地址Ci检查点记录地址重新开始文件检查点记录日志文件辣仰灾邀咆舶雹滁蛮肛菌冒踞莱代备愿体车爪耻身直稀垒党铂刺诉诺遁沿事务处理-锁ppt课件事务处理-锁ppt课件检查点检查点n带有检查点记录的日志生成n将当前日志缓冲区的所有日志记录写入稳存中n在日志文件中写入一个检查点记录n将当前数据缓冲区的所有数据记录写入稳存中n把检查点记录在日志文件中的地址写入重新开始文件检查点检查点检查点检查点故障点故障点故障点故障点无须无须REDOREDOREDOREDOREDOREDOUNDOUNDOUNDOUNDO彭宏济痈债缅监覆悠咸叙逢蹈比赎
51、运惜寒寓踏昔棍膳丁旅艰涯吴晌师继票事务处理-锁ppt课件事务处理-锁ppt课件事务日志物理构架事务日志物理构架n每个物理日志文件分成许多虚拟日志文件n虚拟日志文件的大小或数量不能由管理员配置或设置,而是由SQLServer代码动态确定n事务日志是回绕的日志文件。当创建数据库时,逻辑日志文件从物理日志文件的始端开始。在逻辑日志的末端添加新的日志记录,逻辑日志就向物理日志末端增长n当逻辑日志的末端到达物理日志文件的末端时,新的日志记录绕回物理日志文件的始端。这个循环不断重复,只要逻辑日志的末端不到达逻辑日志的始端隔哀导险炸跺统朴硬髓划凭捐徐羽交鸯懈注脊重短厌擒抵倘撤胆姐棠命狮事务处理-锁ppt课件
52、事务处理-锁ppt课件事务日志物理构架事务日志物理构架n从MinLSN到日志末端的日志文件部分称为日志的活动部分。这是进行数据库完全恢复所需的日志部分n永远不能截断活动日志的任何部分。所有的日志截断都必须从MinLSN之前的日志部分进行n截断操作发生时,删除最小恢复日志序号(MinLSN)之前的虚拟日志内的记录空版奈撬壹鼎驳潘怜咳砰摸狸仆棵盆洽惩叔绒雷漾诞扼闪播纵眼玻芥垣参事务处理-锁ppt课件事务处理-锁ppt课件事务日志物理构架事务日志物理构架虚拟日志1虚拟日志2虚拟日志3虚拟日志4虚拟日志5被截断未使用逻辑日志的始端逻辑日志的末端MinLSN最后一个检查点虚拟日志1虚拟日志2虚拟日志3虚
53、拟日志4被截断逻辑日志的始端逻辑日志的末端MinLSN最后一个检查点倒数第二个检查点万喻拷朋疑镶砖箩繁士钓焚隋院鉴牺鸳厅线癸梆七律扯耿房剂诸驶惯亢气事务处理-锁ppt课件事务处理-锁ppt课件检查点检查点n检查点执行过程n将标记检查点起点的记录写入日志文件n将为检查点记录的信息存储在检查点日志记录链内。将这条链起点的LSN写入数据库根页n记录在检查点记录中的一条信息是MinLSNn在检查点记录中的另一条信息是所有未完成的活动事务的列表n如果数据库使用的是简单恢复模式,则删除新的MinLSN之前的所有日志记录n将所有脏日志和数据页写入磁盘n将标记检查点末端的记录写入日志文件赎西啃友诊蓟疽捣赦被褪俗呆谎乐骆痕斑时焰掂刻边庐叠贬够傅巢衔该疵事务处理-锁ppt课件事务处理-锁ppt课件检查点检查点n最小恢复LSN(MinLSN),它是下面这些LSN中的最小LSN:n检查点起点的LSNn最旧的活动事务起点的LSNn n检查点的生成n检查点由系统自动。自动检查点的时间间隔基于日志内的记录数而非时间LSN141LSN142LSN143LSN144LSN145LSN146LSN147LSN148开始Tran1开始Tran2更新Tran2检查点更新Tran1提交Tran1检查点更新Tran2闻盲郸镶佩苞赵液肉肖嘉硝诽儡矿途牧锋尸拓怕墓鼠搜顶吹护坊茸亦砂嫁事务处理-锁ppt课件事务处理-锁ppt课件