事务及恢复技术.ppt

上传人:京东小超市 文档编号:5974885 上传时间:2020-08-18 格式:PPT 页数:130 大小:691KB
返回 下载 相关 举报
事务及恢复技术.ppt_第1页
第1页 / 共130页
事务及恢复技术.ppt_第2页
第2页 / 共130页
亲,该文档总共130页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《事务及恢复技术.ppt》由会员分享,可在线阅读,更多相关《事务及恢复技术.ppt(130页珍藏版)》请在三一文库上搜索。

1、1,Chapter 2,事务(transaction),迭支浦褒忻驯吼糯沏撩星秩激厕册盈题梗古绊杨愈砷听迎朵奄垫霸脱拿垣事务及恢复技术事务及恢复技术,2,为什么需要事务?,银行转账系统 A=2000 B=1000,事务 A=A-100 B=B+100,Output(A),Output(B),断电或其 他故障,本例表明,在执行组操作时,需要引入一种控制机制,保证组操作要不全部执行,要不全部取消,以保证结果的正确性。,侩介掀艾股锻删蟹朝悄赦睬礼采拷闸部屿贾旋媒坛刻近械水驼俞枉均截往事务及恢复技术事务及恢复技术,3,概念,事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做

2、,要么全不做,是一个不可分割的工作单位 事务是恢复和并发控制的基本单位,绵抡认职疼琵蘑显涧矽寞极判扳晌继蚤铭籍科丁暗舶庚未肥赛瓤韭蔼霉牡事务及恢复技术事务及恢复技术,4,事务的ACID特性(1),原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态,姬茬硼共寺窝旦才护帐或淫动曲祷怎渺育程瘤帧透俯泛卉惺绩蕴腑桥夯鼻事务及恢复技术事务及恢复技术,5,事务的ACID特性(2),隔离性(Isolation):对并发执行而言,一个事务的执行不能被其他事务干扰

3、一个事务内部的操作及使用的数据对其它并发事务是隔离的 并发执行的各个事务之间不能互相干扰 持续性(Durability )/永久性(Permanence) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 接下来的其他操作或故障不应该对其执行结果有任何影响。,铡未惰孕烹犹撰洋贸庙屡寓慢揩悼渝依高舷坍明滩署玩场湾蚕罢宠尾眷镜事务及恢复技术事务及恢复技术,6,一致性,学生数据库 IC0:学号唯一 IC1:每门课有先修课,学生必须先完成先修课才能选当前课 IC2:每门课有最高限选人数 DBMS要保证事务的执行没有违反任何约束,园容园楚昧加随沮罐碍前事睫疲鸵吾葡幌躬养藻逛吠衣凯珍系涉酶几铅蝴

4、事务及恢复技术事务及恢复技术,7,原子性,银行转帐:从帐号A中取出一万元,存入帐号B。 定义一个事务,该事务包括两个操作 这两个操作要么全做,要么全不做 全做或者全不做,数据库都处于一致性状态。 如果只做一个操作,数据库就处于不一致性状态。,铆澜俐昭截永醉苞末缺汝合脸才阁婶崎烁保蓬化携收腆郧栏滓间吟佣赵继事务及恢复技术事务及恢复技术,8,隔离性(1),T1,T2,DBMS,local computation,local variables,sequence of db operations output by T1,op1,1 op1.2,op2,1 op2.2,op1,1 op2,1 op2

5、.2 op1.2,interleaved sequence of db operations input to DBMS,begin trans op1,1 op1,2 commit,擒妆买警些格扎否系少钎岳矣坐县今煤翟冕右侮遭瓣性菜履赁疽洼谨优镜事务及恢复技术事务及恢复技术,9,隔离性(2),蚊枯熊惊吉鸯荡建淌岳碟李在叙军拭棱哲勘褪趁怖兄垦几干盲稠照统醒土事务及恢复技术事务及恢复技术,10,定义事务,BEGIN TRANSACTION SQL 语句1 SQL 语句2 COMMIT TRANSACTION,BEGIN TRANSACTION SQL 语句1 SQL 语句2 ROLLBACK T

6、RANSACTION,COMMIT:事务正常结束,提交事务的所有操作事务中所有对数据库的更新永久生效,ROLLBACK:事务异常终止。在运行过程中发生了故障,回滚事务的所有更新操作,事务滚回到开始时的状态。,镣克恒擞掏归萤袄菇弄味优拳损烈茸蠕恿辐官七挞暇择牌盅州频渠旬帮床事务及恢复技术事务及恢复技术,11,实现事务的隔离性:并发控制,多事务执行方式 (1) 串行执行 每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行 不能充分利用系统资源,发挥数据库共享资源的特点,艳栋粪都铲奴捏羌割迹篇三多尾唱清埔董惰黍灌拢刺蹄烙粘浓涉卑耙渣幅事务及恢复技术事务及恢复技术,12,并发控制(2)

7、,(2)交叉并发方式(interleaved concurrency) 事务的并行执行是这些并行事务的并行操作轮流交叉运行。宏观并发,微观串行。 是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统的效率,眷琵烫凳妒象勺俞枝险杜肝匀楚铜趾靡式凿佐老癌绘赐痪岂份消颧臣经摔事务及恢复技术事务及恢复技术,13,并发控制(3),(3)同时并发方式(simultaneous concurrency) 多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行 最理想的并发方式,但受制于硬件环境,醚揩宰细拆掂精钒稼躺仟仇豌损赦坪淆乳浸其啪狭锚窍姻骤凉履

8、琳境峪敲事务及恢复技术事务及恢复技术,14,事务并发执行带来的问题,可能会存取和存储不正确的数据,破坏事务的隔离性和数据库的一致性,后优萌锌饼雍煎捷闯皱晚延哦疥让掩倘驰复咨齿趟静层稿翅烛商绷液长锑事务及恢复技术事务及恢复技术,15,并发控制机制的任务,对并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性,痘契叔丽费扫磁独钝囚划署馅求惧睛眨哗砂参急檬怪巨费程马竣射搐涤铺事务及恢复技术事务及恢复技术,16,丢失更新问题 读脏数据问题 不可重复读问题,三个关键问题,吨掸厂獭篇乾蚀却壶田甚痊苫脉雹介娶晦良偏些勇构救傣系唁压症理褥衷事务及恢复技术事务及恢复技术,17,丢失更新,描述:事务1与事务

9、2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。,雾能整消矩痹追优预鞋宫挣罚巳溢谩绰侨武卯淀迅嘶恒搐又纂驾屹瘤好驰事务及恢复技术事务及恢复技术,18,丢失更新,尝凛释瘸胚吧横个锡伙吟昂冰暖鹤予痰多亿草泪笨洋静吭导埠伟桩卿蕴整事务及恢复技术事务及恢复技术,19,读脏数据,事务1修改某一数据,并将其写回磁盘 事务2读取同一数据 事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值 事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。,戏胎庞伯辙腊逾涟泼五霖怂漫蒜袄铁围刨犊蜀谩救屹航躺嫡顺某殴窃伊地事务及恢复技术事务及恢复

10、技术,20,读脏数据,胀里讹追迢股购邱棠自钒赫爬馋瞳爱娱媚飞掉刘央蜘坠舒型居胯葛活烯内事务及恢复技术事务及恢复技术,21,不可重复读,事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。 三类不可重复读(事务1读取某一数据后): 事务2对其做了修改 事务2删除了其中部分记录 事务2插入了一些记录 后两种不可重复读有时也称为幻影现象(phantom row),冤扑系始供到继撬娟哈灰卫惧独稻戳糠芋乓盟惨够咯凌吼漫乙寄嫉厂部恩事务及恢复技术事务及恢复技术,22,不可重复读,阻冤卿燥魂澡幌栈磺臣耀灭韵平寥挎揪毁读酚攒抬钦愁混陷柜豺姬定囤矿事务及恢复技术事务及恢复技术,23,小结,坎奎

11、噶殆乖慷郎郝厘拜社醚喝华珐窘诡巳冬腮孙楞蔑麦许耸晴管蓑剃雹苇事务及恢复技术事务及恢复技术,24,锁,加锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁 加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。 加锁是实现并发控制的一个非常重要的技术,锭渍物坊川侦诫鼻秩好励涛扦探里俞郴徘洋谍绕叫猩减呀熊推谈拘般呆液事务及恢复技术事务及恢复技术,25,基本加锁类型,DBMS通常提供了多种类型的加锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由加锁的类型决定的。 基本加锁类型 排它锁(eXclusive lock,简记

12、为X锁) 共享锁(Share lock,简记为S锁),泛庭很譬换廷谴睡皖芦肮锗苹擦仪义脓加坦纱玩剿殊莎佯谆黎壶讥命堑阁事务及恢复技术事务及恢复技术,26,排它锁,排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁,愧靡赢镣饭净韵彬甚蘑磷艰衅高芜裳奶避脯横老疮奎帮摆洁坛溜体涛贞绦事务及恢复技术事务及恢复技术,27,共享锁,共享锁又称为读锁 若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,神翁缕恃娠腮庐撅磕砂靳锌按酝狸哇馅挠冈扣疹斌切菊倔痴涤封鄙粮虏答事务及恢复技术事务及恢

13、复技术,28,三、锁的相容矩阵,楚雕娠瑞埃感峪脱崖匆瞬霉令秒船电坛献狙昭焊偏坚犀索阔藏鄂聂漓筋腕事务及恢复技术事务及恢复技术,29,加锁协议,在运用X锁和S锁对数据对象加锁时,需要约定一些规则:加锁协议(Locking Protocol) 何时申请X锁或S锁 持锁时间、何时释放 不同的加锁协议,在不同的程度上为并发操 作的正确调度提供一定的保证 常用的加锁协议:三级加锁协议,犹镶蛋毒临荷擅甄泵床踏爽濒餐抄肥尼柜营孜为送芥化粥吸陶讹线矢瘁讣事务及恢复技术事务及恢复技术,30,1级加锁协议,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放 正常结束(COMMIT) 非正常结束(ROLLB

14、ACK) 1级锁协议可以解决什么问题?有什么不足?,李赠胆银抠临镜霞洒娜敬铁钠扯铃困优毙欣绑佯乾嫡谜夷刹峨盏贷厘棕眠事务及恢复技术事务及恢复技术,31,访帖痘潞虞茄少邀匝茎扯萤嘛礼约哟谨砧蜒孔悦挥溉窍邓型核曲纶睦于举事务及恢复技术事务及恢复技术,32,闻朵失雌店典彰婴滚烫们挣烬欢唉探搬雾候穴饺轿捡矮掏滁怎戳梁踞误咖事务及恢复技术事务及恢复技术,33,1级加锁协议的作用和局限,1级加锁协议可防止丢失修改 在1级加锁协议中,如果是读数据,不需要加锁的,所以它不能保证可重复读和不读“脏”数据。,诧谈迁夏耻处蔡俏植脑皱揩迫魁卯继焙牢佃妮算雍夕稽唆特撅戳临税屉御事务及恢复技术事务及恢复技术,34,2级加

15、锁协议,1级加锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁 2级锁协议可以解决什么问题?有什么不足?,睫瓣勃酱黍腋循叫登悔冷炒锭庇猜挣邀宅毙载叛匝嘴木翰奔煤内祈叁岔到事务及恢复技术事务及恢复技术,35,喳荔反萝勉掺现咕棋呼睫恐量哦喻沛口洽淋处唐想杠小墙晾欧止起馏史妥事务及恢复技术事务及恢复技术,36,2级加锁协议的作用和局限,2级加锁协议可以防止丢失修改和读“脏”数据。 在2级加锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。,独谋壮喻瘸儿屹眷脑韶贸矾煽伦犯课傻闰弟澳佬吐长利密粳券滁德呸谓吐事务及恢复技术事务及恢复技术,37,3级加锁协议,1级加锁协议 + 事务T

16、在读取数据R之前必须先对其加S锁,直到事务结束才释放 3级加锁协议可防止丢失修改、读脏数据和不可重复读。,朽卉淄蓑墓饵嘛糙韵凑雍酉递烷疵涩厦破烷坐中橇撰木击凸繁靡想睦熙委事务及恢复技术事务及恢复技术,38,搔釜秽耶默敲擞蘑等帽擅再樱鳃恨甫褪跳郧百藏通谦迅幌仿镭墓蒂腹谗域事务及恢复技术事务及恢复技术,39,加锁协议小结,三级协议的主要区别 什么操作需要申请加锁 何时释放锁(即持锁时间),杂煞兄翠眶触瑞伴读书埋石蕴薪歌女挑顶泌龄客盅绿杉鞘充邯昆油悸坞能事务及恢复技术事务及恢复技术,40,加锁协议小结(续),军芥墅徽赠奎迎颂蜒惕隧淤卢贰姬召掷断掉溶兑锌淌舵像殴宠钟虫涸虾猴事务及恢复技术事务及恢复技术

17、,41,活锁和死锁,加锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题 哲学家吃饭:圆桌旁有5个哲学家,每哲学家的左右各有1根筷子,怎样才能让每个哲学家都吃到饭?,诅罢殖进莹券罢婴稚杆裴某扣颗骚洋狐进镭呜馁尽鹅庞讯橇岔唤喉妨轩碱事务及恢复技术事务及恢复技术,42,活锁,瑰婴国扰受争佳弊绸牌孟阉剩授廊献挥紊孕减瘸巳勇卒钨胡况藉邮敬弧锥事务及恢复技术事务及恢复技术,43,如何避免活锁,采用先来先服务的策略: 当多个事务请求加锁同一数据对象时 按请求加锁的先后次序对这些事务排队 该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁。,伊申哇俗泡辖星凭滨秧讹纺袱盘但融甘朴檀爱葬犁

18、丹晕鹰杜栋尝逗沏炒辽事务及恢复技术事务及恢复技术,44,死锁,卑衬癣阮鱼犹郎罕触签盏楼皆渴删层过帖衷神侣盟很擎捌扦嚷庙踏奔莎纷事务及恢复技术事务及恢复技术,45,解决死锁的方法,两类方法 1. 预防死锁 2. 死锁的诊断与解除,刹甘袒钢厘韶獭武州练蹋臭闽瑚牧讣恩些蜡卞发甚迢炽壕浸往亿晨蛛苯钵事务及恢复技术事务及恢复技术,46,死锁的预防,产生死锁的原因是两个或多个事务都已加锁了一些数据对象,然后又都请求对已为其他事务加锁的数据对象加锁,从而出现死等待。 预防死锁的方法 一次加锁法 顺序加锁法,牧漓丰茧肉测啦纷性食岸品渤专付梭终棵没淖霸郡盈个睹治神不媳汀硕桥事务及恢复技术事务及恢复技术,47,一

19、次加锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行 一次加锁法存在的问题:降低并发度 扩大加锁范围 将以后要用到的全部数据加锁,势必扩大了加锁的范围,从而降低了系统的并发度,妆惋响秤报匪蜒决专诊旱公毛蔷菩雨筑贬滥戳簧林授梁蓄百昏搓周结归仔事务及恢复技术事务及恢复技术,48,一次加锁法(续),难于事先精确确定加锁对象 数据库中数据是不断变化的,原来不要求加锁的数据,在执行过程中可能会变成加锁对象,所以很难事先精确地确定每个事务所要加锁的数据对象 解决方法:将事务在执行过程中可能要加锁的数据对象全部加锁,这就进一步降低了并发度。,非鸟眠觅重骑限留司缅没贸夜完鄙葱刘扛醋席饺

20、摄讣敖匪昨还馋越状浙埔事务及恢复技术事务及恢复技术,49,顺序加锁法,顺序加锁法是预先对数据对象规定一个加锁顺序,所有事务都按这个顺序实行加锁。 顺序加锁法存在的问题 维护成本高 数据库系统中可加锁的数据对象极其众多,并且随数据的插入、删除等操作而不断地变化,要维护这样极多而且变化的资源的加锁顺序非常困难,成本很高,陇矿撼汐睦捆申自喝蓉链共椅届侵港耀拱原饼属岿引涵计中袋澈谐半引您事务及恢复技术事务及恢复技术,50,顺序加锁法(续),难于实现 事务的加锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要加锁哪些对象,因此也就很难按规定的顺序去施加加锁。 例:规定数据对象的加锁顺序为A,

21、B,C,D,E。事务T3起初要求加锁数据对象B,C,E,但当它加锁了B,C后,才发现还需要加锁A,这样就破坏了加锁顺序.,搓赣祁尸扣栽屑津赋貌茹捏胞句锤脆渴楔襄窍惋次苍卵爷漆目角嚎呢蔓爱事务及恢复技术事务及恢复技术,51,死锁的诊断,前提:允许死锁发生 解除死锁 由DBMS的并发控制子系统定期检测系统中是否存在死锁 一旦检测到死锁,就要设法解除,母睹霉诚三麻牵烟酿寅巳顶城兴羹遍腰朱咯辟波惭易蟹氓驰处漏倡户论悔事务及恢复技术事务及恢复技术,52,超时法,如果一个事务的等待时间超过了规定的时限,就认为发生了死锁 优点:实现简单 缺点 有可能误判死锁 时限若设置得太长,死锁发生后不能及时发现,轴遮玻

22、橙懈淤巨费侵织郧书尿毯宣妒咸票纱锻洲旭厄蜕砧敏虱嗽北闯碱瑞事务及恢复技术事务及恢复技术,53,等待图法,用事务等待图动态反映所有事务的等待情况 事务等待图是一个有向图G=(T,U) T为结点的集合,每个结点表示正运行的事务 U为边的集合,每条边表示事务等待的情况 若T1等待T2,则T1,T2之间划一条有向边,从T1指向T2 并发控制子系统周期性地(比如每隔1 min)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。,呈恤尝幽课饭庆禽导渐煤无巍堤贷懂秉五拆仅荧貌丈值翘尝弥绢石旦仪荷事务及恢复技术事务及恢复技术,54,等待图法(二),讥港彬腔稚睹献汤摈愚盈释萨馋谭蓖姚吁咐枫与播俐波岭

23、冰内暖挎矮相其事务及恢复技术事务及恢复技术,55,死锁的解除,解除死锁 选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去。 例:画出哲学家吃饭问题的一个死锁等待图,并提出解决方案。,酷匿添淬捅惟蹿糙育瞒藩址腻耐姬源估输美扣死咐咽辫势鬼杠偶毯更晦窟事务及恢复技术事务及恢复技术,56,并发调度的可串行性,事务的调度: 事务的执行次序称为“调度” 串行调度: 如果多个事务依次执行,则称为事务的串行调度(Serial Schedule) 并发调度: 如果利用分时的方法,同时处理多个事务,则称为事务的并发调度(Concurrent Schedule)。,褐议樟

24、翟瑞柜盂困绥削血百心状登剑沼埠呛锌秽嘎苦开噎挥姨邪乒种决莱事务及恢复技术事务及恢复技术,57,并发调度的议题,什么样的并发操作调度是正确的 如何保证并发操作的调度是正确的,亩月怒萌胀杀暂脯尊峻店段迢炭环置骸寻韦棋神饶休忽拆翘迫叉踩奢涟粹事务及恢复技术事务及恢复技术,58,什么样的并发操作调度是正确的,计算机系统对并行事务中并行操作的调度是的随机的,而不同的调度可能会产生不同的结果。 将所有事务串行起来的调度策略一定是正确的调度策略。 如果一个事务运行过程中没有其他事务在同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的,幕怎啸菌桔竟冯失呻核市酗摘戳亏晃

25、亡矣兔础幂殆察乒巫踪舆薄猫帚铡迫事务及恢复技术事务及恢复技术,59,什么样的并发操作调度是正确的(Cont),以不同的顺序串行执行事务也有可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都可以认为是正确的。 几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。,襟藕宅交斯帧框维篷庆者千因草颗澄炽瘸换捷广折摔融拣定犁眠凰困册咏事务及恢复技术事务及恢复技术,60,什么样的并发操作调度是正确的( Cont ),可串行性是并行事务正确性的唯一准则 例:现在有两个事务,分别包含下列操作: 事务1:读

26、B;A=B+1;写回A; 事务2:读A;B=A+1;写回B; 假设A的初值为2,B的初值为2。,肺脏褐压霹频帖绢顾皆浮怖根灶庸钦休恋殆炬磅磐泛志匙胸玖巢雷戮盛抗事务及恢复技术事务及恢复技术,61,什么样的并发操作调度是正确的( Cont ),对这两个事务的不同调度策略 串行执行 串行调度策略1 串行调度策略2 交错执行 不可串行化的调度 可串行化的调度,健困暖探醋趴仑爹字徒痢吠聘嫌氓场幕当殷哮乙瞄需惋烈鸡酣蚜续暮颈笑事务及恢复技术事务及恢复技术,62,串行调度策略(1),靡媳曼搏许瘤娜薯柠躇停褪码绝啃漆躺患终刻鲁顾慎哑烩团丑教下踢拳途事务及恢复技术事务及恢复技术,63,串行调度策略(2),规辅

27、得饮擒靡虾嫌蛀梳伪阮稠觅雁铱馒铬嚏瑚殃兴快室票剔氓脓蹬拙痈大事务及恢复技术事务及恢复技术,64,不可串行化的交叉调度,席豺蝉汛体腰景良蝶编按讶慨慰硒辟束史挽罗叫甄缸厅肘扶肥抑架螟敌陵事务及恢复技术事务及恢复技术,65,可串行化的交叉调度,烁忌贸爬呐较邯胳岭睛铜康勃斋加娘舶阐汉描恶漓茨即泪美蹬闭穴九荷秉事务及恢复技术事务及恢复技术,66,如何保证并发操作调度的正确性,为了保证并行操作的正确性,DBMS的并行控制机制必须提供一定的手段来保证调度是可串行化的。 从理论上讲,在某一事务执行时禁止其他事务执行的调度策略一定是可串行化的调度,这也是最简单的调度策略,但这种方法实际上是不可行的,因为它使用户

28、不能充分共享数据库资源。,蚁俩惫疟稼芋特瘁襄僳辈诉葱床营腻咽折沾栋毒耙冒压邹怯颓蔗祥忠盗坏事务及恢复技术事务及恢复技术,67,两段锁协议,两段锁协议的内容 1. 在对任何数据进行读、写操作之前,事务首先要获得对该数据的加锁 2. 在释放一个加锁之后,事务不再获得任何其他加锁。,窗布饰拓埔洛侗符笋赋狞灼母寻馆绊表揽从认政壮粘袍恰鸭胆坍盾掀首锦事务及恢复技术事务及恢复技术,68,两段锁协议(2),“两段”锁的含义 事务分为两个阶段 第一阶段是获得加锁,也称为扩展阶段; 第二阶段是释放加锁,也称为收缩阶段。,霓肆务噎广貉诅镁痛嵌绣墅春段未衙狮嘶谋益躲比胁赌堤仕转措租瓜嗣兢事务及恢复技术事务及恢复技术

29、,69,两段锁协议(3),例: 事务1的加锁序列: Slock A . Slock B . Xlock C . Unlock B . Unlock A . Unlock C; 事务2的加锁序列: Slock A . Unlock A . Slock B . Xlock C . Unlock C . Unlock B; 事务1遵守两段锁协议,而事务2不遵守两段协议。,音姻吵性金畅烁调搓浇牌驹遵奸彰标舰气几基尸朝雹村强亏抱猛木詹婴三事务及恢复技术事务及恢复技术,70,两段锁协议(4),并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。 所有遵守两段锁协议的事务,其并

30、行执行的结果一定是正确的 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件 可串行化的调度中,不一定所有事务都必须符合两段锁协议。,屑芜舜球门扇淮柠献汾撰喂末馈缉槽毛炬菏逼桃垒哩毒宣烤摇搬畔顿县牌事务及恢复技术事务及恢复技术,71,剑圆议塘抨铀双咽元嘎隋蜗脆歌皇拳祝记洱陇亥熄凑灼输蒜坎腾荷潮弃勃事务及恢复技术事务及恢复技术,72,风绵猩基砂侈轴驹岁醋析碗尖靛曰陆纵用尘榷伶驳偿手惨藐淹胶搬将辉甭事务及恢复技术事务及恢复技术,73,穗屎晓旅扼耽岩撕弊拭镶卵桔九窒蒸蹄沤颗夕铂塞骄劳拽层舆啤籍园扫肋事务及恢复技术事务及恢复技术,74,两段锁协议讨论,两段锁协议与防止死锁的一次加锁法 一次加锁

31、法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次加锁法遵守两段锁协议 但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁,展籍芭愚汹歼承罚隔旷婪挨狄锥纶咙贴哀盎觅啡雍觉皂拄昼搜光夯姿垒烦事务及恢复技术事务及恢复技术,75,两段锁协议讨论(2),遵守两段锁协议的事务发生死锁,T1 Slock B 读B=2 Xlock A 等待 等待,T2 Slock A 读A=2 Xlock A 等待,防汁矛摈离獭藉烁劝恢舍淮丝绣箕芬广常贞斤窑锦戏狙擎腋沮畔辩涟冀汕事务及恢复技术事务及恢复技术,76,两段锁协议讨论(3),两段锁协议与

32、三级加锁协议 两类不同目的的协议 两段锁协议 保证并发调度的正确性 三级加锁协议 在不同程度上保证数据一致性 遵守第三级加锁协议必然遵守两段锁协议,炔屋赊柬烟腾脚浪旨翟爹囤敦植桨胖厉悔落御力栗曾掇烬贰定晦隘盲爽逻事务及恢复技术事务及恢复技术,77,小结(1),数据共享与数据一致性是一对矛盾 数据库的价值在很大程度上取决于它所能提供的数据共享度。 数据共享在很大程度上取决于系统允许对数据并发操作的程度。 数据并发程度又取决于数据库中的并发控制机制 另一方面,数据的一致性也取决于并发控制的程度。施加的并发控制愈多,数据的一致性往往愈好。,债啡畴追啦揣藕痰辆衙忠坷绍染桂航晴珠湾普柞驱执靛凉让华饲悟咸

33、愤爸事务及恢复技术事务及恢复技术,78,小结(2),数据库的并发控制以事务为单位 数据库的并发控制通常使用加锁机制 两类最常用的加锁 不同级别的加锁协议提供不同的数据一致性保证,提供不同的数据共享度。 三级加锁协议,枕瞄践勉位劲涨救捏尹刽巴舱膀摘靠闸帛搪列萧娶袜铝穆纸膝渐息替遮芜事务及恢复技术事务及恢复技术,79,小结(3),并发控制机制调度并发事务操作是否正确的判别准则是可串行性 并发操作的正确性则通常由两段锁协议来保证。 两段锁协议是可串行化调度的充分条件,但不是必要条件,鹰出酱坍旅仿弧团赤矩胆聂刷俱舍前代瘁钦缀薯疑腰坞嚎使共捻某估隐瞄事务及恢复技术事务及恢复技术,80,小结(4),对数据

34、对象施加加锁,带来问题 活锁: 先来先服务 死锁: 预防方法 一次加锁法 顺序加锁法 死锁的诊断与解除 超时法 等待图法,希箍应幸狮绽供便怪量笨赠两杜睫吝绩深褪源默前翰巧堆郴票屯醇载尤发事务及恢复技术事务及恢复技术,81,故障恢复的手段,撤消(UNDO):强行回滚(ROLLBACK)该事务 重做(REDO):重做所有已提交的事务,晒爱恋朱史婿丸朔体诡飘串奖趟啪吉罩宁端佐苹染撅土冗影纺孪扼虾男郝事务及恢复技术事务及恢复技术,82,恢复操作的基本原理,恢复操作的基本原理:冗余 利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据 恢复的实现技术:复杂 一个大型数据库产品,恢复

35、子系统的代码要占全部代码的10%以上,糟直光补突夯烹闲聊殷廉哉储鸭抒隶昂哭艺出芹丽窗致郴循善躁腥捕议趣事务及恢复技术事务及恢复技术,83,恢复的实现技术,恢复机制涉及的关键问题 1. 如何建立冗余数据 数据转储(backup) 登录日志文件(logging) 2. 如何利用这些冗余数据实施数据库恢复,训汗垃婶机喉威龙蔽访泳磊节咽尿鳖澳蝉鱼拯声意但岔转访品队羞噪淮咳事务及恢复技术事务及恢复技术,84,数据库系统日志(一),备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,只能将数据库恢复制作备份的那一时刻。 日志是对备份的补充,它可以看作是一个值班日记,它将记录下所有对数据库的更新操

36、作。日志文件是实时的。 当磁盘发生故障造成DB损坏时,先利用备份恢复大部分数据库,然后运行数据库日志,将备份后所做的更新操作在重做一遍,从而使DB完全恢复。,允狭赵怖哦往骡枚疲屡枢宏敢撤席松派朽尖由柴蚜拇倡夺构威投贰灯马排事务及恢复技术事务及恢复技术,85,数据库系统日志(二),为保证日志的安全,应该将日志和主数据库安排在不同的存储设备上,否则日志和DB可能会同时遭破坏,日志也就失去了本来的作用。 日志记录有几种,“更新日志记录”描述一次数据库写操作,它有如下几个字段: 事务标识:执行写操作的事务的唯一标识。 数据项标识:所写的数据项的唯一标识,通常是数据项在磁盘上的位置。 旧值:数据项的写前

37、值。 新值:数据项的写后值。,偶浚屿择丹巾氧孩蔓搏陨嗽酥镁莆址妓械啸该文粹束考瞳招腿芦瑞娇假晦事务及恢复技术事务及恢复技术,86,数据库系统日志(三),每次事务执行写之前,必须在DB修改前生成该次写操作的日志记录。一旦日志记录已创建,就可以根据需要对DB做修改,并且,能利用日志记录中的旧值消除已做的修改。,畅闷肠钙外皆箭予烦翘盘悯走塞挑北程戎笼粪栽桅橱馅种惮邦篡秦琅路笋事务及恢复技术事务及恢复技术,87,数据库系统日志(四),推迟更新协议 每个事务在到达提交点之前不能更新数据库 一个事务的所有更新操作所对应的日志记录写入永恒存储器之前,该事务不能到达提交点,砂埋究即遵掐淌笑轧爱西豆健竹旗膏阴励

38、蛮管壶船含辕温锰褂冲俺拿教沙事务及恢复技术事务及恢复技术,88,梭淀濒躯湍宇悉状愁车艰量相院留浑鉴僚砖呆我甜屎整讣灰壳姻另奥志篷事务及恢复技术事务及恢复技术,89,转储,转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程。,故障发生点 转储 运行事务 正常运行 Ta Tb Tf 重装后备副本 重新运行事务 恢复 ,畅膨琴过坛码操室晰伯如吏惨直宠允榜驼挺举不巡吱绎迪取鼓毫塑效丧曾事务及恢复技术事务及恢复技术,90,静态转储,在系统中无运行事务时进行转储 转储开始时数据库处于一致性状态 转储期间不允许对数据库的任何存取、修改活动 优点:实现简单 缺点:降低了数据库的可用性 转储必须等

39、用户事务结束 新的事务必须等转储结束,骸铣要镶翘晨斩正尸必恩港绕荧航帧眶赠贿驻迢狸圾浪祟姥熬温斜翘膏良事务及恢复技术事务及恢复技术,91,利用静态转储副本进行恢复,故障发生点 静态转储 运行事务 正常运行 Ta Tb Tf 重装后备副本 恢复 ,魔栅件恕谍庸萌监浊廊邮拽凑但惭校卢憾酌点登兢裂遗吟秒孩喀瞅早易折事务及恢复技术事务及恢复技术,92,动态转储,转储操作与用户事务并发进行 转储期间允许对数据库进行存取或修改 优点 不用等待正在运行的用户事务结束 不会影响新事务的运行 动态转储的缺点 不能保证副本中的数据正确有效,恶厦订素烩晃产少惕函保问偷惮门艺苗易涛硅刽弥亡篆菇暴奸黔沉声种傣事务及恢复

40、技术事务及恢复技术,93,动态转储,利用动态转储得到的副本进行故障恢复 需要把动态转储期间各事务对数据库的修改活动登记下来,建立日志文件 后备副本加上日志文件才能把数据库恢复到某一时刻的正确状态,唁翱厂拥男辕懦填埂影借恒跺妹鸭羞巫廷舆舶李旗沂囚深铁塌迁戮堵茄慷事务及恢复技术事务及恢复技术,94,利用动态转储副本进行恢复,运行事务 故障发生点 动态转储 运行事务 正常运行 Ta Tb Tf 重装后备副本 利用日志文件恢复 恢复 ,谈葵骡罩珍脱匪唁地停邱钻稗咆勉泅亮迟草六赢胞抚樱滤庚下神涸猪独掣事务及恢复技术事务及恢复技术,95,利用动态转储副本进行恢复,Ta Tb Tf 动态转储 运行事务 故障

41、发生点 正常运行 登记日志文件 登记新日志文件 转储日志文件 重装后备副本,然后利用转储的日志文件恢复 恢复到一 致性状态,碉拆靖饰蛾凳尧腮窝搐觅旦朔叫粟险茬涯祝实襄玄勾案闸避袱我厅东援姓事务及恢复技术事务及恢复技术,96,海量转储与增量转储,海量转储: 每次转储全部数据库 增量转储: 只转储上次转储后更新过的数据 海量转储与增量转储比较 从恢复角度看,使用海量转储得到的后备副本进行恢复往往更方便 但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效,子开犯真姻圭檄蚁龚青漂剑准剩诱嫁展斑婿册簿辖息妥催绎片嘴孤打趋壹事务及恢复技术事务及恢复技术,97,转储方法小结,转储方法分类,蓉幸

42、闯世棒雀兢裹譬缘送踌函镣洗疮孪坛返瞒仔厌逆贸喘晃败拳蘑蝴纬烹事务及恢复技术事务及恢复技术,98,转储策略,应定期进行数据转储,制作后备副本。 但转储又是十分耗费时间和资源的,不能频繁进行。 DBA应该根据数据库使用情况确定适当的转储周期和转储方法。 例: 每天晚上进行动态增量转储 每周进行一次动态海量转储 每月进行一次静态海量转储,嗡向饯下升汞善灰朔具攒殿又吮治峨祝渊众舀绝眩浪矛玩灰洋耶键族举蜡事务及恢复技术事务及恢复技术,99,事务故障的恢复,事务故障:事务在运行至正常终止点前被中止 恢复方法 由恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改 事务故障的恢复由系统自动完成

43、,不需要用户干预,咽囤么僻炕件汐朗舱恋奋宅堕吸扫嚏裴伏霍梢兜抵企境朴天侗殖盲龄霖两事务及恢复技术事务及恢复技术,100,事务故障的恢复步骤(1),1. 反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。 2. 对该事务的更新操作执行逆操作。即将日志记录中“更新前的值”(BI, AI)写入数据库。 插入操作, “更新前的值”为空,则相当于做删除操作 删除操作,“更新后的值”为空,则相当于做插入操作 若是修改操作,则用BI 代替 AI(After Image),普陋陨恫征颤媚苹雷扩亏攘威梅流持橡啊栏画垦曳袋态冒或妨暂脂诀主汀事务及恢复技术事务及恢复技术,101,事务故障的恢复步骤

44、(2),3. 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 4. 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。,严份驹野换舔泵硅宦魏啥渴章奔勇短悟儡惜网棘契搔蓉于少段抠寸挞闹基事务及恢复技术事务及恢复技术,102,关于效率的问题的讨论,内存页与高速缓存 Redo表 Undo表,拱镰吗变骚篡康蕾公落饼著檀仗猖论隙儡耗砚曾孜剪癣育瓶敞赘赶栏灾兽事务及恢复技术事务及恢复技术,103,系统故障的恢复,系统故障造成数据库不一致状态的原因 一些未完成事务对数据库的更新已写入数据库 一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库 恢复方法 1. Undo 故障

45、发生时未完成的事务 2. Redo 已完成的事务 系统故障的恢复由系统在重新启动时自动完成,不需要用户干预,锤潮重值阮中饰序吞阑椭技庙钮惧伶衍夏秩杉扇拙捏遮震亥丁赣针水谗音事务及恢复技术事务及恢复技术,104,系统故障的恢复步骤(1),1. 正向扫描日志文件(即从头扫描日志文件) Redo队列: 在故障发生前已经提交的事务 T1, T3, T8 Undo队列:故障发生时尚未完成的事务 T2, T4, T5, T6, T7, T9 .,赖胜躺钥蝎删驱腺遇葱履秋栏涟拖逛弄占铬韵争甫觉蛀癌函忻立深人租强事务及恢复技术事务及恢复技术,105,系统故障的恢复步骤(2),2. 对Undo队列事务进行UND

46、O处理 反向扫描日志文件,对每个UNDO事务的更 新操作执行逆操作 T2, T4, T5, T6, T7, T9 3. 对Redo队列事务进行REDO处理 正向扫描日志文件,对每个REDO事务重新 执行登记的操作 T1, T3, T8,喻蜗参奎鬃蒲兑乱晃盾龚圆述势惶拇锦匪堤杂袒冻婿椰僵缎屈畴白挟旋擞事务及恢复技术事务及恢复技术,106,介质故障的恢复(1),1. 重装数据库, 使数据库恢复到一致性状态 2. 重做已完成的事务,绰豆剑匡勤赠糟胯庇背肌饶夏猎设啼芹呈唾峡丝拯悲咏阀醇障躬碗蔓丘奉事务及恢复技术事务及恢复技术,107,介质故障的恢复(2),恢复步骤 1. 装入最新的后备数据库副本,使数

47、据库恢复到最近一次转储时的一致性状态。 对于静态转储的数据库副本,装入后数据库即处于一致性状态 对于动态转储的数据库副本,还须同时装入转储时刻的日志文件副本,利用与恢复系统故障相同的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。,映浇腮笆武凝草捷沫咀噬汐傀铁淀宛但仇凶斯厕诺锥癌骂绿蜜短婪在恭践事务及恢复技术事务及恢复技术,108,利用静态转储副本将数据库恢复到一致性状态,故障发生点 静态转储 运行事务 正常运行 Ta Tb Tf 登记日志文件 重装后备副本 恢复 ,总饮莆养俩宁诱弹舟媒竞拘遮乐狮饼截咕喀琵仔逼潮球磋哨恰卿剂冰补郝事务及恢复技术事务及恢复技术,109,利用动态转储副

48、本将数据库恢复到一致性状态,Ta Tb Tf 动态转储 运行事务 故障发生点 正常运行 登记日志文件 登记新日志文件 转储日志文件 重装后备副本,然后利用转储的日志文件恢复 恢复到一 致性状态,灿式柬西诚硷果黎闭脉辽览把挨必斟哼秸藕沤揍末绥侣蘸韵辛攒稻混袖酉事务及恢复技术事务及恢复技术,110,介质故障的恢复(3),2. 装入有关的日志文件副本,重做已完成的事务。 首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。 然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。,曝谱锐归隘糟跃晒厕磋松曾豌链租煤眩奴肤通杯罗来晚摔委拳协受痒溃霞事务及恢复技术事务及恢复技术,111,介质故障的恢复(4),介质故障的恢复需要DBA介入 DBA的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1