《chap5事务处理并发控制与恢复技术.ppt》由会员分享,可在线阅读,更多相关《chap5事务处理并发控制与恢复技术.ppt(44页珍藏版)》请在三一办公上搜索。
1、第5章事务处理、并发控制与恢复技术,棘雷喜冰倦毯寐幽赋露滤墙桐饵瘦爆砍桥惩譬哎溜执坚档钎窄馏努毅皑讳chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,本章目标,本章结束时,学员能够:了解事务的概念和ACID特性掌握并发控制和封锁技术的概念理解并发调度的可串行性及两段锁协议了解封锁粒度了解数据库系统的故障种类理解数据库恢复的实现技术和常见故障的恢复策略了解数据库镜像技术,暖京逛苦危耿井角互拧宵榔舟淋匈入持洪祝筏麦贴仗播由闪鞋恼忘第虹野chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1事务的基本概念,事务的概念:所谓事务是用户定义的一个
2、数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。事务是一个逻辑工作单元,同时又是一个恢复单元一个事务提交之后,数据库又处于或应该处于一个一致性状态,朗针易栏蚁碰何孪破湍趾做便雹迂武罢判藕毒芭镁勤桓霓彬拔腑蔓桶牌竟chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1事务的基本概念,“一荣俱荣,一损俱损”这句话很能体现事务的思想,很多复杂的事物要分步进行,但它们组成一个整体,要么整体生效,要么整体失效。这种思想反映到数据库上,就是多个SQL语句,要么所有执行成功,要么
3、所有执行失败。,惺拇邪侥恢拐兹升痔刃螺遍括厕账笑晚凝涟炭彭屈流仰叛凯吟辣犁绣翅溜chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1.1 事务(续),定义事务的三条语句:BEGIN TRANSACTIONCOMMITROLLBACKSQL中事务以Begin transaction开始,以Commit 或 Rollback 结束Commit 表示提交,即提交事务的所有操作,事务正常结束。Rollback 表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态,晚逾怔旨股局线旧离姆捧桃酒敝摹污倍顷藤恢髓韶帝倦蔷午蝇皖疵皆耘蔚chap5事务处理、并发控制与恢复技
4、术chap5事务处理、并发控制与恢复技术,SQL Server 的事务模式:自动提交事务每条单独的语句都是一个事务。每条语句后都隐含一个COMMIT显式事务每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。隐性事务在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。(如UPDATE/INSERT/DELETE)自动提交模式是 Microsoft SQL Server 的默认事务管理模式。,5.1.1 事务(续),舒旁藏添螟抨含厘惫壮海王蔫柿虹式灼张稠烃腮蝴曲讫众妮勒周拜本悦歧ch
5、ap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1.2 事务的ACID特性,事务的ACID特性:原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability),事务是并发控制和恢复的基本单位。保证事务ACID特性是事务处理的重要任务。,焊巷发傻劈染伍秸丰枯梗由录渴纹扯垦丝舵喧旨呈洲曳嘉捶昨姆玖眶纱廉chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1.2事务的ACID特性(续),原子性(Atomicity):事务中包含的所有操作要么全做,要么全不做原子性由恢复机制实现,悦崭猖克
6、由所允渺喇醇伙固咨诸决艰邀咆疼毒尺菊棺槛易挛朝咬赐黑敝袋chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1.2事务的ACID特性(续),一致性(Consistency)事务的隔离执行必须保证数据库的一致性事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态数据库的一致性状态,由并发控制机制实现如银行转帐,转帐前后两个帐户金额之和应保持不变,醉贰恩璃羊老瓜箔大腾恬匀爹孽屁羹积醒涕旨剥撬赡死蚕梗询苇臻佣坑蔫chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1.2事务的ACID特性(续),隔离性(Isolatio
7、n)一个事务的执行不能被其他事务干扰。系统必须保证事务不受其它并发执行事务的影响对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行隔离性通过并发控制机制实现,势腹嗽晾涨蠕和乡共学也董膏气愉油蔑隙渡市掺成匹彝脂状松蕴恭薄淄恋chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,持久性(Durability)也称为永久性,指一个事务一旦提交之后,它对数据库的影响必须是永久的系统发生故障不能改变事务的持久性持久性通过恢复机制实现,5.1.2事务的ACID特性(续),戴雏贼踌朱岗免溉丹珠溜梳赐赂菊谎婆戮寐包眠暮址巧桂摸瓤藕骨疑里燎
8、chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.1.3事务调度,事务的调度事务的执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序一组事务的调度必须保证包含了所有事务的操作指令一个事务中指令的顺序必须保持不变调度可以分为串行调度和并行调度两种 串行调度在串行调度中,属于同一事务的指令紧挨在一起对于有n个事务的事务组,可以有n!个有效调度并行调度在并行调度中,来自不同事务的指令可以交叉执行当并行调度等价于某个串行调度时,则称它是正确的,沫股手琼帕胞冲前歇珠袜夕绽转哭耪留匀猩衅疟肆六狙敏敷培蔑桨牧峭馏chap5事务处理、并发控制与恢复技术chap5事务处理
9、、并发控制与恢复技术,5.1.3事务调度,并行与串行的对比:、并行调度可以使事务并发执行,以提高系统的吞吐量,但可能会破坏数据库的一致性;串行调度导致时延,效率低。调度的核心问题应该在保证一致性的前提下最大限度地提高并发度,伪斜赞齐徒周拨轿拱辞侧割苛漆君柜炬负催罪重空株疵揽明扦唯铸献丑凌chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.2并发操作,并发操作:当多个用户同时存取数据库就会产生对数据库的并发操作。并发操作打破了事务一个一个执行的顺序,会破坏事务的ACID特性,从而会使数据库处于数据不一致性状态。为了充分利用系统资源,发挥数据库共享资源的特点,应该允许
10、多个事务并行地执行。,培暴滚贞包宏计婉婴紫郴苑冶波秘七斧突废妨遭宗茬竹省婆痒礁响功佯簧chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.2并发操作(续),并发操作带来的数据不一致性:考虑飞机订票系统中的一个活动序列:甲售票点(甲事务)读出某航班的机票余额A,假设A为16;乙售票点(乙事务)读出同一航班的机票余额A,也为16;甲售票点卖出一张机票,修改余额A=A-1,所以A为15,把A写回数据库;乙售票点也卖出一张机票,修改余额A=A-1,所以A为15,把A写回数据库;,磊拼伤逝肄扰还藩沟牢卑呀闲门含魔勒甘哥傅桨疟践昭犬眼领抗细喇趾靛chap5事务处理、并发控制与
11、恢复技术chap5事务处理、并发控制与恢复技术,5.3并发控制技术,为了保证数据一致性,DBMS必须提供并发控制机制,对并发操作进行正确的调度。并发控制机制是衡量一个数据库管理系统性能的重要标志之一。并发控制就是用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。并发控制的主要技术是 封锁(Locking),对足辨游安凋赊嘴讫维惑荣尔竖姬骇膘辫执皿孤裙室拳棺屈摹梁阅迁躇儿chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.3并发控制技术,封锁并发调度的可串行性两段锁协议封锁的粒度,勃壕薛局范挛晦亿钩亥木涣篆棘忧烯盾民碾琶主
12、土羌辖当锦饶烘痒姐头碎chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.3.1封锁,封锁:所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。基本的封锁类型:排它锁(Exclusive Locks,简称X锁)共享锁(Share Locks,简称S锁),渊杨确勇聂淫好舟揭替眉疲剧炎绕薪粪阶屉摹硕论迪罢聋驮谷萝撵买烤酮chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.3.1封锁,排它锁(Exclusive
13、Locks,简称X锁)也称为写锁,若事务T给对象A加上X锁后,则只允许T读取和修改A,其它事务都不能再对A加任何类型锁,直到T释放A上的锁。可以保证X锁释放之前不能再读取和修改A共享锁(Share Locks,简称S锁)又称读锁,事务T给对象A加上S锁后,事务T可以读取但不能修改A;其他事务只能对A加S锁,但不能加X锁,直到事务T释放S锁。,撩嫁二呈术匙区吾健奏蝉玛跨辟骂蠕果缘篆淡出广贿鄂掇炬裹逃右呵治嘴chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.3.2并发调度的可串行性,可串行化调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时
14、的结果相同,我们称这种调度策略为可串行化的调度。串行性调度策略是一种正确的高度策略,因为他不会将数据库置于不一致状态。可串行性:是并发事务正确性的准则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。目前DBMS普遍采用封锁方法实现并发操作调度的可串行性。,持拓蹦栽扳备轩域位掇矢查搞馋杰饶媚胖颓磨背挠敬兄载传定溜谬靠饥概chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.3.3两段锁协议,两段锁协议:是指所有事务必须分两个阶段对数据项加锁和解锁第一阶段(获得封锁):在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁,但不能
15、释放任何锁;第二阶段(释放封锁):事务可以释放任何数据项上的任何类型的锁,但不能再申请任何锁。,事务遵守两段协议是可串行化调度的充分条件,而不是必要条件,尺问览戳为忍陀傀酉扮男骨这查俺廷篆零聊吨麻溅曼贷桥另疤邑谅匿郝贾chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.3.4封锁的粒度,封锁粒度:封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。封锁对象(以关系数据库为例):逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引直至整个数据库物理单元:页(数据页或索引页)、块等。,举秘斥叛缴荤栋整仟奋硒紫厚憨疑极玛舔醚音养仑番梁烙蛋夺腥鳃
16、级了肾chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.3.4封锁的粒度,封锁粒度与系统的并发度和并发控制的开销密切相关封锁粒度越大,数据库能够被封锁的单元就越少,并发度就越小,系统开销就越小;反之,封锁粒度越小,并发度越高,系统的开销越大。选择封锁粒度时要考虑封锁开销和并发度两个因素。,荒桔坝坛荫劝疏勉黔岭麦潞好剿义顿耘流接盂瞻优皆椰闭扬背壳渊据腹棘chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,补充:在企业管理器中查看锁,在企业管理器目录树下的 管理当前活动锁进程ID或锁进程对象 中可以查看当前活动的锁。在快捷菜单中我们可以展开
17、相应的锁并查看其属性;在属性面板中可以刷新或杀死进程。在T-SQL中可使用KILL SPID(KILL 52)来结束当前锁进程。SP_LOCK命令来查看所有锁。(sp_lock 或sp_lock 52),见胖臭益胰稗共啃秉糠雇蒸脉急遗卞归簇颗蕊责斯蒙绦耻克骂语边窗倾游chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,补充:在企业管理器中查看锁,死锁:当两个或多个用户同时使用一个资源,并且每一方都想利用他人的资源而不愿放弃自己的资源时,即在等对方释放资源,就会造成死锁。解决方法:“死一个比两个都死要好”。即杀死其中一个进程。,考镣察摧局脚相郡冯扯柏浩雍棋凰勾执哟追良逆
18、初男猜害诅冗秒保请古觉chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.4数据库系统的故障种类(四类),事务内部的故障 指事务没有达到预期的终点,数据库处于不正确的状态。系统故障指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电介质故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。计算机病毒,窗荒篓搂辜项虑蒋笼死划臻只涸奋屡徽垄薛欣拨阵育殖缺惺谓赛寡啦绪淤chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.4数据库系统的故障种类(四类),对数据库的
19、影响大体分为两种类型:一是数据库本身被破坏;二是数据库本身没有破坏,但由于事务的运行被非正常终止造成数据可能不正确。,刷够街骏诡呀专遭么谰岳棋阿案斗泪谚丝钾咸蛾嵌建令多耽选嘎卵痪骗印chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.5数据库恢复与实现技术,恢复机制涉及的两个问题是:如何建立冗余数据;二是如何利用这些冗余数据实施数据库恢复。数据库恢复技术主要有以下两种:数据转储登记日志文件数据库恢复:数据库的恢复就是保证把数据库从错误状态恢复到某一已知的正确状态。,亚碰湛济妨悍抚育姬眨癣三障暇哨寞房蔽隶杭疑喝蹦伟缮溢嘴晤险质拧讨chap5事务处理、并发控制与恢复技
20、术chap5事务处理、并发控制与恢复技术,5.5.1.1数据转储,转储:所谓转储即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。后备副本只能将数据库恢复到转储时的状态,若要恢复到故障发生时的状态,必须重新运行转储后的所有更新事务。,勋掺逼藕休肚纬照哇实丸独频唆稠勿提蛆简蹈淤樟寺藏惹琐叫穴咒柬宿服chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.5.1.1数据转储,转储分类:按转储状态分类:静态转储和动态转储;静态转储是在系统中无运行事务时进行转储操作,即转储期间不允许对数据库的任何存取、修改活动。动态转
21、储是指转储期间对数据库进行存取或修改,即转储和用户事务可以并发执行。按转储方式分类:海量转储和增量转储。海量转储是指每次转储全部数据库 增量转储则指每次只转储上次转储后更新过的数据。,蜡碌控况历淡屠亏遣诚称扬爬译纪预迂胁却琳环若药痊德棠逼裕价圣藤区chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.5.1.1数据转储,豹巩某慌陀格销炙嚏墅我淄穗隐排燕蛇验彝萨怖上伐孤实烬哲芬存骆冀衣chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.5.1.2登记日志文件,日志文件:日志文件是记录事务对数据库的更新操作,以备用来进行事务故障恢复和系统故
22、障恢复,并协助后备副本进行介质故障恢复的文件。日志文件的两种格式:以记录为单位的日志文件 以数据块为单位的日志文件,涌抬叁贵萌籍许纱东亨答某倚字趴聘利旅漱舟俄瘤丰寒搏守垦谣行斧败蒋chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.5.1.2登记日志文件,以记录为单位的日志文件内容:各个事务的开始标记各个事务的结束标记各个事务的所有更新操作 每个事务的开始标记、结束标记和每个更新操作构成日志文件中的一个日志记录。,逃脯闯确靛匀有架蒲娇瘪廷每诗膀如没宪血固泉训丸少里缝忠捡写呻畔够chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.5.1
23、.2登记日志文件,每个日志记录的主要内容:事务标识(标明哪个事务)操作的类型(插入、删除或修改)操作对象(记录内部标识)更新前数据的旧值更新后数据的新值,疮遮锑纤候铁把诲帅税遂销柱衍滤斋艺粗癣渔变弄新鸭增刺笑墙军砷爷组chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.5.1.2登记日志文件(续),事务故障恢复和系统故障必须用日志文件。登记日志文件时必须遵循两条原则:登记的次序严格按发生事务执行的时间次序。必须先写日志文件,后写数据库。,舀婉交漂递慕蕾氨桂湃墅音橙漂像纫潞鲍智想菩羚爸沙茫冶戴闽革硒颓净chap5事务处理、并发控制与恢复技术chap5事务处理、并发控
24、制与恢复技术,5.6恢复策略(三种),事务故障的恢复系统故障的恢复介质故障的恢复,秉旬契革辨野墨友下书兹勒檄蝇沈帛蛋胎臀少校疵簿揩指得呜回藕臼蔼覆chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.6.1事务故障的恢复,事务故障:是指事务在运行至正常终止前被终止恢复子系统应利用日志文件撤销(UNDO)此事务已对数据库进行的修改。事务故障的恢复是由系统自动完成的,对用户是透明的。,虽绷匡渭挺蛀鸡奶完杜题吭迎猛闯倾轩死互汰灭赦瓤合熙痰枕慢纪鹿浇队chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.6.1事务故障的恢复,事务故障的恢复步骤:
25、反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。对该事务的更新操作执行逆操作。继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。,肇程冷余耳袋横第从陶就检朱葛揩郁弯抖幻哟吧获遮编眩示辽绿换觅磨沪chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.6.2系统故障的恢复,系统故障的原因:一是未完成的事务对数据库的更新可以已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。恢复操作就是要撤消故障发生时未完成的事务,重做已完成的事务。,鹿的景夺菠则层赵摇
26、说媚巍裸绊铺媳湿姑肤促廷鄂载在坯坷鳃博铆赃堵促chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.6.2系统故障的恢复,系统故障的恢复步骤:正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务,将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(UNDO)队列。(注意区别P116)对撤销(UNDO)队列中的各个事务进行撤销处理。对重做(REDO)队列中的各个事务进行重做处理。,捕拐啮芥裳砒匪衣嫌傲磷录恒政蛹他捣秀就儿锁树佑活喇悬柄任销豁掷伊chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制
27、与恢复技术,5.6.3介质故障的恢复,介质故障发生后,磁盘上的物理数据和日志文件被破坏,方法是重装数据库,然后生做已完成的事务。介质故障需要DBA的介入。介质故障的恢复步骤:装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。,规符弥钧萤锰蛤丑锨狠蔡其伯鹰兹履哉时葵谍粕裂仑役保隅程抨锻粤丝兹chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.7数据库镜像,数据库镜像主要用于数据库恢复。将整个数据库或其中的关键数据复制到另一个磁盘上,由DBMS自动保证镜像数据与主数据的一致性。用
28、户往往只选择对关键数据和日志文件镜像,而不是对整个数据库进行镜像。数据库镜像还可以用于并发操作,当一个用户对数据加排它锁修改数据时,其它用户可以读取数据库上的数据而不必等待该用户释放锁。,凶嚣石谆咖恃杂冷连清落詹煽杖防致晨淳屠陡兑屈哗歉胖筐维萤授祭拐搐chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,5.7数据库镜像,数据库镜像,辰磷俩专掷弃碟右歪淤汁鳃痢尸帮摆勒誉漱刑羌尤气肘完窃搜雏宋等莉铂chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,本章总结,事务的概念和ACID特性并发操作带来数据的不一致性问题封锁是实现并发控制一个非常重要的技术并发调度的可串行性及两段锁协议封锁粒度数据库系统的故障种类数据库恢复的实现技术常见故障的恢复策略数据库镜像,色七各妙换耻哎禾焊苞沏皇斌镑搽环痢伊背拉僻蚂爵维甘采迹峪熏衫哉挝chap5事务处理、并发控制与恢复技术chap5事务处理、并发控制与恢复技术,