chap事务处理并发控制与恢复技术PPT课件_第1页
chap事务处理并发控制与恢复技术PPT课件_第2页
chap事务处理并发控制与恢复技术PPT课件_第3页
chap事务处理并发控制与恢复技术PPT课件_第4页
chap事务处理并发控制与恢复技术PPT课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章事务处理、并发控制与恢复技术第1页/共44页本章目标本章结束时,学员能够: 了解事务的概念和ACID特性 掌握并发控制和封锁技术的概念 理解并发调度的可串行性及两段锁协议 了解封锁粒度 了解数据库系统的故障种类 理解数据库恢复的实现技术和常见故障的恢复策略 了解数据库镜像技术第2页/共44页事务的基本概念 事务的概念: 所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。 例如,在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。 事务是一个逻辑工作单元,同时又是一个恢复单元 一个事务提交之后,数据库又处于或应该处于一个一致性

2、状态第3页/共44页事务的基本概念 “一荣俱荣,一损俱损”这句话很能体现事务的思想,很多复杂的事物要分步进行,但它们组成一个整体,要么整体生效,要么整体失效。这种思想反映到数据库上,就是多个SQL语句,要么所有执行成功,要么所有执行失败。 第4页/共44页5.1.1 事务 (续) 定义事务的三条语句: BEGIN TRANSACTION COMMIT ROLLBACK SQL中事务以Begin transaction开始,以Commit 或 Rollback 结束Commit 表示提交,即提交事务的所有操作,事务正常结束。Rollback 表示事务非正常结束,撤消事务已做的操作,回滚到事务开始

3、时状态第5页/共44页SQL Server 的事务模式: 自动提交事务 每条单独的语句都是一个事务。每条语句后都隐含一个COMMIT 显式事务 每个事务均以 BEGIN TRANSACTION 语句显式开始,以 COMMIT 或 ROLLBACK 语句显式结束。 隐性事务 在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。(如UPDATE/INSERT/DELETE) 自动提交模式是 Microsoft SQL Server 的默认事务管理模式。5.1.1 事务 (续)第6页/共44页5.1.2 事务的ACID特性 事务的ACID特性: 原子性

4、(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持续性(Durability)事务是并发控制和恢复的基本单位。保证事务ACID特性是事务处理的重要任务。第7页/共44页事务的ACID特性 (续)原子性(Atomicity): 事务中包含的所有操作要么全做,要么全不做原子性由恢复机制实现第8页/共44页事务的ACID特性(续)一致性(Consistency) 事务的隔离执行必须保证数据库的一致性事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态数据库的一致性状态,由并发控制机制实现如银行转帐,转帐前后两个帐户金额之和应保持不变第9页

5、/共44页事务的ACID特性(续)隔离性(Isolation)一个事务的执行不能被其他事务干扰。系统必须保证事务不受其它并发执行事务的影响对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行隔离性通过并发控制机制实现第10页/共44页持久性(Durability)也称为永久性,指一个事务一旦提交之后,它对数据库的影响必须是永久的系统发生故障不能改变事务的持久性持久性通过恢复机制实现事务的ACID特性(续)第11页/共44页事务调度 事务的调度 事务的执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序 一组事务的调度必须保证 包含了所有事务的

6、操作指令 一个事务中指令的顺序必须保持不变 调度可以分为串行调度和并行调度两种 串行调度 在串行调度中,属于同一事务的指令紧挨在一起 对于有n个事务的事务组,可以有n!个有效调度 并行调度 在并行调度中,来自不同事务的指令可以交叉执行 当并行调度等价于某个串行调度时,则称它是正确的第12页/共44页事务调度 并行与串行的对比:、 并行调度可以使事务并发执行,以提高系统的吞吐量,但可能会破坏数据库的一致性; 串行调度导致时延,效率低。 调度的核心问题应该在保证一致性的前提下最大限度地提高并发度第13页/共44页并发操作 并发操作: 当多个用户同时存取数据库就会产生对数据库的并发操作。 并发操作打

7、破了事务一个一个执行的顺序,会破坏事务的ACID特性,从而会使数据库处于数据不一致性状态。 为了充分利用系统资源,发挥数据库共享资源的特点,应该允许多个事务并行地执行。第14页/共44页并发操作(续)并发操作带来的数据不一致性: 考虑飞机订票系统中的一个活动序列: 甲售票点(甲事务)读出某航班的机票余额A,假设A为16; 乙售票点(乙事务)读出同一航班的机票余额A,也为16; 甲售票点卖出一张机票,修改余额A=A-1,所以A为15,把A写回数据库; 乙售票点也卖出一张机票,修改余额A=A-1,所以A为15,把A写回数据库;第15页/共44页并发控制技术 为了保证数据一致性,DBMS必须提供并发

8、控制机制,对并发操作进行正确的调度。并发控制机制是衡量一个数据库管理系统性能的重要标志之一。 并发控制就是用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。 并发控制的主要技术是 封锁(Locking)第16页/共44页并发控制技术 封锁 并发调度的可串行性 两段锁协议 封锁的粒度第17页/共44页封锁 封锁: 所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。 基本的封锁类型: 排它锁(Exclusive Locks,

9、 简称X锁) 共享锁(Share Locks, 简称S锁)第18页/共44页封锁排它锁(Exclusive 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锁。第19页/共44页并发调度的可串行性 可串行化调度: 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这

10、种调度策略为可串行化的调度。 串行性调度策略是一种正确的高度策略,因为他不会将数据库置于不一致状态。 可串行性: 是并发事务正确性的准则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。目前DBMS普遍采用封锁方法实现并发操作调度的可串行性。第20页/共44页两段锁协议 两段锁协议: 是指所有事务必须分两个阶段对数据项加锁和解锁 第一阶段(获得封锁):在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁,但不能释放任何锁; 第二阶段(释放封锁):事务可以释放任何数据项上的任何类型的锁,但不能再申请任何锁。事务遵守两段协议是可串行化调度的充分条件,而不是必

11、要条件第21页/共44页封锁的粒度 封锁粒度: 封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。 封锁对象(以关系数据库为例): 逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引直至整个数据库 物理单元:页(数据页或索引页)、块等。第22页/共44页封锁的粒度 封锁粒度与系统的并发度和并发控制的开销密切相关 封锁粒度越大,数据库能够被封锁的单元就越少,并发度就越小,系统开销就越小;反之,封锁粒度越小,并发度越高,系统的开销越大。 选择封锁粒度时要考虑封锁开销和并发度两个因素。第23页/共44页补充:在企业管理器中查看锁 在企业管理器目录树下的 管理当前活动锁进

12、程ID或锁进程对象 中可以查看当前活动的锁。 在快捷菜单中我们可以展开相应的锁并查看其属性;在属性面板中可以刷新或杀死进程。 在T-SQL中可使用KILL SPID (KILL 52)来结束当前锁进程。 SP_LOCK命令来查看所有锁。(sp_lock 或sp_lock 52)第24页/共44页补充:在企业管理器中查看锁 死锁:当两个或多个用户同时使用一个资源,并且每一方都想利用他人的资源而不愿放弃自己的资源时,即在等对方释放资源,就会造成死锁。 解决方法:“死一个比两个都死要好”。即杀死其中一个进程。第25页/共44页数据库系统的故障种类(四类) 事务内部的故障 指事务没有达到预期的终点,数

13、据库处于不正确的状态。 系统故障 指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电 介质故障 指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。 计算机病毒 第26页/共44页数据库系统的故障种类(四类) 对数据库的影响大体分为两种类型:一是数据库本身被破坏;二是数据库本身没有破坏,但由于事务的运行被非正常终止造成数据可能不正确。第27页/共44页数据库恢复与实现技术 恢复机制涉及的两个问题是:如何建立冗余数据;二是如何利用这些冗余数据实施数据库恢复。 数据库恢复技术主要有以下两种: 数据转储 登记日志文件 数

14、据库恢复: 数据库的恢复就是保证把数据库从错误状态恢复到某一已知的正确状态。第28页/共44页数据转储 转储:所谓转储即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。 后备副本只能将数据库恢复到转储时的状态,若要恢复到故障发生时的状态,必须重新运行转储后的所有更新事务。第29页/共44页数据转储 转储分类: 按转储状态分类:静态转储和动态转储; 静态转储是在系统中无运行事务时进行转储操作,即转储期间不允许对数据库的任何存取、修改活动。 动态转储是指转储期间对数据库进行存取或修改,即转储和用户事务可以并发执行。 按转储方式分类:海量转储

15、和增量转储。 海量转储是指每次转储全部数据库 增量转储则指每次只转储上次转储后更新过的数据。第30页/共44页数据转储正常运行恢复TaTb转储运行事务Tf重装后备副本重新运行事务转储和恢复第31页/共44页登记日志文件 日志文件: 日志文件是记录事务对数据库的更新操作,以备用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复的文件。 日志文件的两种格式: 以记录为单位的日志文件 以数据块为单位的日志文件第32页/共44页登记日志文件 以记录为单位的日志文件内容: 各个事务的开始标记 各个事务的结束标记 各个事务的所有更新操作 每个事务的开始标记、结束标记和每个更新操作构成日志文件

16、中的一个日志记录。第33页/共44页登记日志文件 每个日志记录的主要内容: 事务标识(标明哪个事务) 操作的类型(插入、删除或修改) 操作对象(记录内部标识) 更新前数据的旧值 更新后数据的新值 第34页/共44页登记日志文件(续) 事务故障恢复和系统故障必须用日志文件。 登记日志文件时必须遵循两条原则: 登记的次序严格按发生事务执行的时间次序。 必须先写日志文件,后写数据库。第35页/共44页恢复策略(三种) 事务故障的恢复 系统故障的恢复 介质故障的恢复第36页/共44页事务故障的恢复 事务故障:是指事务在运行至正常终止前被终止 恢复子系统应利用日志文件撤销(UNDO)此事务已对数据库进行

17、的修改。 事务故障的恢复是由系统自动完成的,对用户是透明的。第37页/共44页事务故障的恢复 事务故障的恢复步骤: 反向扫描日志文件(即从最后向前扫描日志文件),查找该事务的更新操作。 对该事务的更新操作执行逆操作。 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。 如此处理下去,直至读到此事务的开始标记,事务故障恢复就完成了。第38页/共44页系统故障的恢复 系统故障的原因:一是未完成的事务对数据库的更新可以已写入数据库;二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。 恢复操作就是要撤消故障发生时未完成的事务,重做已完成的事务。第39页/共44页系统故障的恢复

18、 系统故障的恢复步骤: 正向扫描日志文件(即从头扫描日志文件),找出在故障发生前已经提交的事务,将其事务标识记入重做(REDO)队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤销(UNDO)队列。(注意区别P116) 对撤销(UNDO)队列中的各个事务进行撤销处理。 对重做(REDO)队列中的各个事务进行重做处理。第40页/共44页介质故障的恢复 介质故障发生后,磁盘上的物理数据和日志文件被破坏,方法是重装数据库,然后生做已完成的事务。 介质故障需要DBA的介入。 介质故障的恢复步骤: 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。 装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务。第41页/共4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论