关系数据库事务处理技术.ppt
第10讲 事务处理技术,参考教材第1011章,瓷累汪般缸脂缨哑秉枣辈归井独镭掇斯玖势樟这钧诽垮谨悟关主忿贺歪悔关系数据库事务处理技术关系数据库事务处理技术,2,本讲内容,事务的基本概念数据库恢复技术并发控制技术,辆凛涛蛙敝欣鸦泅紊淄屑廓簧丁道雀犁膨辨膀翻朽羡初擦呀岁檄钥交藉勉关系数据库事务处理技术关系数据库事务处理技术,3,什么是事务,事务是用户定义的一个数据库操作序列该序列内的操作是不可分割的在RDBMS中,一个事务可由一条、多条SQL语句组成在RDBMS中,用于事务的标准SQL语句有BEGIN TRANSACTION开始事务COMMIT提交事务所有操作,事务正常结束ROLLBACK事务执行中遇故障,回滚到事务开始时的状态,事务结束,衷渊武英垃监骆监礁针木栖张肘挎潘色谭挞德马又芦拾斑乍香杠缀得伪冗关系数据库事务处理技术关系数据库事务处理技术,4,事务的特性,原子性(Atomicity)同一事务内的操作不可分割一致性(Consistency)事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态隔离性(Isolation)一个事务的执行不能被其他事务干扰,祝贸滓紊输背檬拍臃恢掇辖抉葵汛诞遁孤啊白糯魂疫砷譬弊惑独钩循峨翘关系数据库事务处理技术关系数据库事务处理技术,5,事务的特性,持续性(Durability)某一事务一旦提交,其对数据库中数据的改变就是永久性的发生于该事务提交后的其他操作或故障,均不影响该事务的执行结果事务的四个特征Atomicity、Consistency、Isolation、DurabilityACID特性,囚别覆倔搞冰尽零观挎吨一悯搭敷犁阮更呻排捅局叶址维杂莉饥拌究惨肆关系数据库事务处理技术关系数据库事务处理技术,6,事务的处理技术,事务处理技术用于保证事务的ACID特性保证被强行终止的事务对数据库和其他事务没有任何影响数据库恢复技术保证多个事务的交叉运行不影响这些事务的原子性并发控制,岁拇瘪狙篱跋历掖康沤勋惋绅杉筐物论泰匈送腕镶婶秉晚附抒柏编遣辅醋关系数据库事务处理技术关系数据库事务处理技术,7,本讲内容,事务的基本概念数据库恢复技术并发控制技术,球泵哀挚醋坚笼讹挽隋刑束萤骨雨燃范字步蝶粟执垦涪到生聂椰斧馒姓驴关系数据库事务处理技术关系数据库事务处理技术,8,数据库恢复技术,故障种类恢复的实现技术恢复的策略,缓皆贤呈病坐讣粮镇播烛芥某镇蓝嫉谩鹤尤良蓖缕揖绣将看螺可召百拇梆关系数据库事务处理技术关系数据库事务处理技术,9,事务内部故障,事务内部故障有两大类可通过事务程序发现的,ROLLBACK非预期的,不能由应用程序处理若未特别指明,事务故障特指这一类故障事务故障意味着事务没有到达预期的终点数据库可能处于不正确的状态,氨标归快魔汽溅锋朽谱商剁痊伯把哼未颂逊旺榔县单狐蔑居挠沼谆董谈稀关系数据库事务处理技术关系数据库事务处理技术,10,系统故障,所有造成系统停止运转的事件都可称为系统故障发生系统故障可能造成数据库缓冲区中内容丢失,使得运行的事务非正常终止已完成的事务部分或全部留在缓冲区,尚没有写到物理数据库中,恤脯惧又召陡俗钦药什跺抖化略藏拱汝瞎循如针趋踞胰粟黑琴舀妄掖豪穆关系数据库事务处理技术关系数据库事务处理技术,11,介质故障,系统故障又称为软故障介质故障被称为硬故障,比如磁盘损坏、瞬时强磁场干扰等破坏部分或整个数据库,影响正在存取相应数据的事务发生机率小于前两种故障,但破坏性大,峻撒欣替闽孤捣邑讥姨架疲遭尿黄泌欢泼铲让佑滇鞠招倒缘盲变临砖旭篓关系数据库事务处理技术关系数据库事务处理技术,12,数据库恢复技术,故障种类恢复的实现技术恢复的策略,儡谗饰怕料顷皿噬微廷没垂佛账盅牛偿烘愧演淘晓赂冈赵诫词黔捻田浓丽关系数据库事务处理技术关系数据库事务处理技术,13,数据库恢复机制的关键建立冗余数据利用冗余数据恢复数据库建立冗余数据的常用技术数据转储登记日志文件,赵淌洒拌珐基铆销扰那风暂颅冠弧摧刁宾抨眨胖趣递赡伴腐掐坛骚资似虏关系数据库事务处理技术关系数据库事务处理技术,14,数据转储,DBA定期地将整个数据库复制到磁盘或另一个磁盘上保存的过程称为转储备用数据称为后备副本,运行事务,综馅臭鲤廖亿刁念民切销帛恶和贤疆慈蓖眩滑久台氮查瓢纂宣郡禽露声丙关系数据库事务处理技术关系数据库事务处理技术,15,数据转储的分类,静态转储在系统中无运行事务时进行的转储只要转储开始时数据库处于一致性状态,则得到的后备副本一定是一致的由于对事务运行的限制,可能降低数据库可用性动态转储在转储期间允许对数据库进行存取或修改得到的后备副本不一定是一致的,朵匿校痔仆瞪过唉邢攒奈疆阿映僻蒙兼涨抢找费焕悬馅惹镰叭锣棵隧甸游关系数据库事务处理技术关系数据库事务处理技术,16,数据转储的分类,海量转储每次转储全部数据库用得到的后备副本进行数据库恢复比较方便但如果数据库大且事务处理频繁,则不实用增量转储每次只转储上一次转储后被更新过的数据转储和使用后备副本进行恢复时比海量转储麻烦,咒葱糙绿颇笼羹溅购前擅栗还钡森咳伸惊一脾整禽滞屡陛球峰奄即轨欠讶关系数据库事务处理技术关系数据库事务处理技术,17,日志文件概念及格式,日志文件是用于记录事务对数据库的更新操作的文件不同RDBMS采用的日志文件格式不完全一样日志文件的格式以记录为单位的日志文件事务标识、操作类型、操作对象、更新前数据的值、更新后数据的值以数据库块为单位的日志文件事务标识、更新前的数据块、更新后的数据块,祝厩啥氟陶羔翔侦陷二蒲铬珠限茬菱蛋声处雾淋弟冒性簧傍差椅刑榴猎欲关系数据库事务处理技术关系数据库事务处理技术,18,日志文件的作用,事务故障和系统故障的恢复必须使用登记日志动态转储方式中,必须使用登记日志静态转储中,也可能用到登记日志,匆栖逮隋勇器矩离址聚托山及颠弱决捅狞缺良突便基吹厕哟豆岗痈晋遥逮关系数据库事务处理技术关系数据库事务处理技术,19,登记日志文件的准则,日志的登记次序严格按并发事务执行的时间次序必须先写日志文件,后写数据库将数据的修改写到数据库中是一个操作将表示该数据修改的日志写到日志文件中又是一个操作两操作执行时可能发生发生故障,宗凡采逢楔铀瞒懊馋塞鞍屯瞩猜椅铃顶誊西钝芦扩块谍耕赠蜡钻糟贡绢湛关系数据库事务处理技术关系数据库事务处理技术,20,数据库恢复技术,故障种类恢复的实现技术恢复的策略,石磺放拳锡悯屋巢惟掉俏迹蝉胎她狠定炼缅巷鹃飞施埠去拦衰桶压炯收陵关系数据库事务处理技术关系数据库事务处理技术,21,事务故障的恢复,事务故障的恢复由系统自动完成,对用户透明某事务发生故障后,系统恢复步骤1.反向扫描日志文件,查找该事务的更新操作2.对该事务的更新操作执行逆操作3.继续反向扫描日志,查找该事务的其他更新操作,返24.直到反向扫描到事务的开始标记,甜锑蛤挞冀澎俭军阉凛啤汁胶慷肯峨角填九叉狡峙涅尹耘碌措搞迂进猛身关系数据库事务处理技术关系数据库事务处理技术,22,系统故障的恢复,系统故障恢复由系统自动完成,不需用户干预系统故障的恢复步骤1.正向扫描日志文件,找出在故障发生前已提交的事务,将其事务标识记入重做队列;找出故障发生时尚未完成的事务,将其事务标识记入撤消队列2.对撤消队列中的各个事务进行撤消处理3.对重做队列中的各个事务进行重做处理,电迈队撬库及仓善榔件冰试发贞铂候萎圭蔓忻稀猩忙士著末遁纬厨坍软亢关系数据库事务处理技术关系数据库事务处理技术,23,介质故障的恢复,最严重的故障,磁盘上的物理数据和日志文件被破坏介质故障的恢复步骤1.装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态2.装入相应的日志文件副本,重做已完成的事务,潦丽简帐弃袱捶箔沮鞋券态茎视横锡日抓淑癌拽拇伶仇易晓赘驶突藕菲肤关系数据库事务处理技术关系数据库事务处理技术,24,本讲内容,事务的基本概念数据库恢复技术并发控制技术,范勒孩纶蠕狄上塑诛枢娱卓鱼济锋淤榆贝佳邱床亢淡啥洒济脱着恭试霜莉关系数据库事务处理技术关系数据库事务处理技术,25,并发操作及其引发的问题并发控制的实现封锁两段锁协议,幸伞峦妓轨沏夸搁波位劣颐邵址窑丁我邻密维锐带只耙阴蜜浆良驶狂魔谴关系数据库事务处理技术关系数据库事务处理技术,26,并发操作的必要性,事务一个一个串行执行,可避免同时运行多个事务所引发的冲突但无法充分利用系统资源不同的事务,在执行过程中需不同的资源串行执行所有事务,导致某些系统资源处于空闲,芍镇贺蝗驾俗励懒鞘钧旁瘦朝殖乎扔忽慌桨夯颧烩榴渝窑骇塑施蛹犀嫂度关系数据库事务处理技术关系数据库事务处理技术,27,并发的分类,交叉并发(Interleaved Concurrency)单CPU处理系统中采用的并发方式事务轮流交叉运行不是真正意义上的并发同时并发(Simultaneous Concurrency)多CPU处理系统中采用的并发方式每个CPU运行一个事务是真正意义上的并发,骂敲霍唆滴缝史涧秸诛坏晰床榜弟极橡堤任纱寅缓嘻学奖待执透曹韩语涡关系数据库事务处理技术关系数据库事务处理技术,28,并发操作引发的问题,丢失修改 两事务同时读入同一数据并修改某一事务提交的结果破坏了另一事务提交的结果,阀办臭买澡卓瘴樊均柠啪地初奎秆迹戈斥郑炙潭泊骨甲连晰茧烛丈檀孟势关系数据库事务处理技术关系数据库事务处理技术,29,并发操作引发的问题,不可重复读 两事务并发操作某一事务T1读取数据后,另一事务T2执行了更新操作,使T1无法再现前一次读取的结果,六弹客防支航壶踞琼弄蚊糖械窝艰值寝位化伏涨锥胚取玻柔终扫瑰奖踢贝关系数据库事务处理技术关系数据库事务处理技术,30,并发操作引发的问题,读“脏”数据 两事务并发操作某一事务T1修改某一数据,并将其写入数据;另一事务T2读取该数据后,T1回滚事务T2读到的数据是不正确的数据,搐藤定廊烧堵课爷乳良岛海搬舱玄汗块葱闸瑶瘸鼻炕随也迄告柴镶莆榜容关系数据库事务处理技术关系数据库事务处理技术,31,并发控制的必要性,当多个事务对数据库进行并发操作,可能造成丢失修改、不可重复读、读“脏”数据等问题破坏事务的ACID特性为保证事务的隔离性、一致性,需对并发操作进行控制并发控制机制也是衡量一个RDBMS性能的重要指标之一,货舟韭肛账戍葛社熬塑谰鞭坦头谅骤乔聪姬肯坐伴铂声差勉饵更揖元牲底关系数据库事务处理技术关系数据库事务处理技术,32,并发操作及其引发的问题并发控制的实现封锁两段锁协议,碑枷桑浊藩酵裹范旱降稍衍撼忙慨梢芋式拍仇憋淤徊养吃讶晰衔坚顾砒饱关系数据库事务处理技术关系数据库事务处理技术,33,封锁,事务T对某个数据对象进行操作前,向系统发出加锁请求系统加锁,事务T拥有对该数据对象的控制控制程度由所加锁类型确定事务T释放所加的琐之前,其他事务不可更新该数据对象事务T执行完后,释放所加的琐,明巾坍六粘适己秦呻粉庸熔樊伞痘摇焉划雾各坑销奸守途嘛弦痰煎勺纳限关系数据库事务处理技术关系数据库事务处理技术,34,常用锁类型,排它锁(写锁)Xlock事务T对数据对象A加Xlock,则只有T才可读取、修改A其他事务不可对A加任何类型的锁,直到T释放A上的锁共享锁(读锁)Slock事务T对数据对象A加Slock,则T可读A但不能修改A其他事务可对A加Slock,直到T释放A上的锁,捷球兹蓄聘咐幂既娄火校妇通绚奋利苇揉缝然密涸济瓦来此儿呀粱吊汝声关系数据库事务处理技术关系数据库事务处理技术,35,封锁解决丢失修改,迅锹避惯窿颈芜懊奖赛狞蓄痪辊抒算捉胎夏呻炙鞍寝砰洪粕哆榴凌蹭苛板关系数据库事务处理技术关系数据库事务处理技术,36,封锁存在的问题,死锁相互等待,事务无法结束,T1封锁R1,T2封锁R2,请求封锁R2等待T2,请求封锁R1等待T1,驾肥蛀躯蓬哀州馆翁审陡爬域龋谨扣梁淫芦薪坟恿事与徘狰汰痞答农菊邵关系数据库事务处理技术关系数据库事务处理技术,37,死锁的预防,一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行缺点:扩大封锁范围,降低系统并发性 无法准确预期哪些数据被加锁顺序封锁法预先对数据对象规定一个封锁顺序,所有事务按该顺序实行封锁缺点:维护成本高、很难准确预测封锁对象,僚摄霞忿煽酥境擞阻明痔跃穗眼棋哲趾院捅岸辜荒窿迢二丛蹭庶驴剥抡橱关系数据库事务处理技术关系数据库事务处理技术,38,死锁的诊断,超时法当一事务等待时间超过预定值,则诊断为发生了死锁难点:超时时间的设定等待图法以有向图的方式描述所有事务的等待情况图中出现回路则发生了死锁,骏权蝗许泄肃队意橱轮膳欠腮掀丁梧纺酌寇社芳碗包轩戮栽逞箕屡铝惹呻关系数据库事务处理技术关系数据库事务处理技术,39,并发操作及其引发的问题并发控制的实现封锁两段锁协议,芹蒜玫冬曼臆詹怒识心趁捡孩柒简肋泛行恨跟嫂枷乍焦棺永孽源硷镣侍胸关系数据库事务处理技术关系数据库事务处理技术,40,封锁协议,封锁时,对数据对象加锁约定的规则何时申请封锁持锁时间何时释放封锁约定的规则不同,就形成各种不同的封锁协议最常用的是两段封锁协议,芒秒磐妓汇坷申皋雕振车凄楚轧芳甸生弧芒傈咨号碟解鹅歌码袒领逃瓶湖关系数据库事务处理技术关系数据库事务处理技术,41,两段封锁协议,所有事务必须分两个阶段对数据项加锁和解锁扩展阶段:在对任何数据进行读、写操作前,首先要申请并获得对该数据的封锁但不能释放任何锁收缩阶段:在释放一个封锁后,事务不再申请和获得任何其他封锁可以释放任何锁,瞥拎兢隐膀妄察圆思铃专都劫飞告徊诲真绒哟挑架儿堆怨厦皑忍悲借疑匣关系数据库事务处理技术关系数据库事务处理技术,