掌握事务的基本概念及特性.pptx

上传人:莉*** 文档编号:87271844 上传时间:2023-04-16 格式:PPTX 页数:62 大小:487.42KB
返回 下载 相关 举报
掌握事务的基本概念及特性.pptx_第1页
第1页 / 共62页
掌握事务的基本概念及特性.pptx_第2页
第2页 / 共62页
点击查看更多>>
资源描述

《掌握事务的基本概念及特性.pptx》由会员分享,可在线阅读,更多相关《掌握事务的基本概念及特性.pptx(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第10章数据库的恢复技术第1页/共62页10.1 事务的基本概念10.2 数据库恢复概述10.3 故障的种类10.4 恢复的实现技术10.5 恢复策略10.6 具有检查点的恢复技术10.7 数据库镜像10.8 小结第2页/共62页 数据库的定义:数据库被破坏的原因,可归纳为:软硬件故障,造成数据被破坏。数据库的并发操作引起数据的不一致性。自然或人为地破坏,如失火、失窃、病毒和为授权人的有意纂改数据。对数据库数据的更新操作有误,如操作时输入错误的数据或存取数据库的程序有错等等。第3页/共62页针对这四类问题,一般DBMS提供了相应的功能:安全性保护:保护数据库防止恶意的破坏和非法的存取,防范对象

2、:非法用户和非法操作。完整性保护:防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。防范对象:不合语义的、不正确的数据(实体,参照)数据库恢复:即系统失效后的数据库恢复,配合定时备份数据库,使数据库不丢失数据。并发控制:即保证多用户能共享数据库,并维护数据的一致性。第4页/共62页 10.1 10.1 事务的基本概念10.1.1 10.1.1 事务的定义1.1.什么是事务事务是由用户定义的一组操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位,是恢复和并发控制的基本单位.是一种机制,它确保多个SQLSQL语句被当作单个工作单元来处理2 2.事务和程序是两个概念

3、在关系数据库中,一个事务可以是一条SQLSQL语句,一组SQLSQL语句或整个程序一个应用程序通常包含多个事务第5页/共62页3 3.定义事务隐式方式当用户没有显式地定义事务时,DBMS按缺省规定自动划分事务显式定义方式 第6页/共62页事务的开始与结束由用户显式控制。定义事务的语句有三条:BEGIN TRANSACTIONBEGIN TRANSACTION SQL SQL 语句 .COMMIT COMMIT ROLLBACK ROLLBACKBEGIN TRANSACTIONBEGIN TRANSACTION表示事务的开始;COMMITCOMMIT表示事务的提交 (事务正常结束 提交事务的所

4、有操作(读+更新),事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务中所有对数据库的更新永久生效)第7页/共62页ROLLBACKROLLBACK表示事务的回滚,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,再回滚到事务开始时的状态。n事务异常终止n事务运行的过程中发生了故障,不能继续执行n回滚事务的所有更新操作,所有已完成的更新操作全部撤销n事务滚回到开始时的状态第8页/共62页10.1.2 10.1.2 事务的特征事务是由有限的数据库操作序列组成,但并不是任意的数据库操作序列都能成为事务,为了保护数据的完整性,一般要求事

5、务具有以下四个特征:原子性 一致性 隔离性 持久性 ACIDACID准则1 1原子性(AtomicAtomic)一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(nothing nothing or or allall)的原则,即不允许事务部分的完成。如果事务因故障没有完成,则该事务已做的操作认为是无效的,在恢复时必须取消该事务对数据库的影响保证原子性的思路:对于要执行写操作的数据项,在磁盘上记录其旧值,若事务没能完成执行,旧值将被恢复,好像事务从未执行保证原子性是DBMSDBMS本身的责任,由“事务管理部件”处理。第9页/共62页2 2一致性(Consisten

6、cyConsistency)事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指数据库中的数据满足完整性约束。第10页/共62页例如,银行企业中,“从帐号A A转移资金额R R到帐号B B”是一个典型的事务,这个事务包括两个操作,从帐号A A中减去资金额R R和在帐号B B中增加资金额R R。定义一个事务,该事务包括两个操作这两个操作要么全做,要么全不做全做或者全不做,数据库都处于一致性状态。如果只做一个操作,数据库就处于不一致性状态。第11页/共62页可见事务的一致性与原子性是密切相关的。确保单个事务的一致性是对该事务编码的应用,程序员的责任。第12页/共6

7、2页3 3隔离性(IsolationIsolation)一个事务的执行不能被其它事务干扰。如果多个事务并发地执行,应像各个事务独立执行一样。事务并发执行的结果和某一串行执行的结果相同。事务并发执行的相对独立性,这是事务并发控制的目标。并发控制就是为了保证事务间的隔离性隔离性保证:多个事务并发执行的结果和某一串行执行的结果相同第13页/共62页T1的修改被T2覆盖了!读A=16AA-3写回A=13读A=16AA-1写回A=15T2T1第14页/共62页4 4持久性(DurabilityDurability)指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DB

8、MSDBMS也应该能够恢复。第15页/共62页事务上述四个性质的英文术语的第一个字母为ACIDACID。因此,这四个性质以称为事务的ACIDACID准则。下面是一个事务的例子,从帐号A A转移资金额R R到帐号B B:BEGIN TRANSACTIONBEGIN TRANSACTION READ A AA-R IF A0/*A 款不足*/THEN BEGIN DISPLAY“A 款不足”ROLLBACK ENDELSE /*拨款*/BEGIN BB+R DISPLAY“拨款完成”COMMIT END第16页/共62页这是对一个简单事务的完整的描述。该事务有两个出口:当A 帐号的款项不足时,事务

9、以ROLLBACK(撤销)命令结束,即撤销该事务的影响;另一个出口是以COMMIT(提交)命令结束,完成从帐号A到帐号B的拨款。在COMMIT之前,即在数据库修改过程中,数据可能是不一致的,事务本身也可能被撤销。只有在COMMIT之后,事务对数据库所产生的变化才对其他事务开放,这就可以避免其他事务访问不一致或不存在的数据。第17页/共62页事务的ACID特性可能遭到破坏的因素有:1、多个事务并发运行,不同事务的操作交叉执行;(DBMS必须保证在此种情况下多个事务的交叉运行不影响这些事务的原子性,这是DBMS中的并发控制机制的责任。)2、事务在运行过程中被强行停止。(DBMS必须保证被强行终止的

10、事务对数据库和其它事务没有任何影响,这是DBMS中的恢复机制的责任。)第18页/共62页10.2 10.2 数据库的恢复10.2.1 10.2.1 数据库恢复的含义虽然数据库系统中已采取一定的措施,来防止数据库的安全性和完整性的破坏,保证并发事务的正确执行,但数据库中的数据仍然无法保证绝对不遭受破坏,比如计算机系统中硬件的故障、软件的的错误,操作员的失误,恶意的破坏等都有可能发生,这些故障的发生影响数据库数据的正确性,甚至可能破坏数据库,使数据库中的数据全部或部分丢失。数据库的恢复:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)第19页/共62页 10.3 10.3 故

11、障的种类事务内部,系统故障,介质故障,计算机病毒1、事务内部的故障有的是预期的(可以通过事务程序本身发现的)有的是非预期的第20页/共62页BEGIN TRANSACTIONBEGIN TRANSACTION READ A AA-R IF A0/*A 款不足*/THEN BEGIN DISPLAY“A 款不足”ROLLBACK ENDELSE /*拨款*/BEGIN BB+R DISPLAY“拨款完成”COMMIT END预期到的故障,发现余额不足,则让事务滚回,撤消已做的更改,恢复数据库到正确的状态。第21页/共62页事务内部更多的故障是非预期的,是不能由应用程序处理的。如运算溢出、并发事务

12、死锁等。以后,我们指的事务故障仅指这一类非预期的故障。事务故障意味着事务没有达到预期的终点(COMMIT 或者显式的ROLLBACK),因此,数据库可能处于不正确的状态。恢复程序要在不影响其它事务运行的前提下,强行回滚(ROLLBACK)该事务,撤消该事务已经作出的任何对数据库的修改,使得该事务好象根本没有启动一样。这类恢复操作称为事务撤消(UNDO)。第22页/共62页2、系统故障系统故障是指系统在运行过程中,由于某种原因,造成系统停止运转,致使所有正在运行的事务都以非正常方式终止,要求系统重新启动。引起系统故障的原因可能有:硬件错误如CPUCPU故障、操作系统或DBMSDBMS代码错误、突

13、然断电等。这时,内存中数据库缓冲区的内容全部丢失,存储在外部存储设备上的数据库并未破坏,但内容不可靠了。第23页/共62页n发生系统故障时,事务未提交n恢复策略:强行撤消(UNDO)所有未完成事务n发生系统故障时,事务已提交,但缓冲区中的信息尚未完全写回到磁盘上。n恢复策略:重做(REDO)所有已提交的事务n重做(REDO):有些己提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的物理数据库中,这也使数据库处于不一致状态,因此应将这些事务己提交的结果重新写入数据库第24页/共62页3 3、介质故障介质故障是指系统在运行过程中,由于存储器介质受到破坏,使存储在外存中的数据部分丢失或全

14、部丢失。这类故障比事务故障和系统故障发生的可能性要小,但这是最严重的一种故障,破坏性很大。4、计算机病毒一种人为的故障或破坏,是一些恶作剧者研制的一种计算机程序可以繁殖和传播危害破坏、盗窃系统中的数据破坏系统文件第25页/共62页故障小结各类故障,对数据库的影响有两种可能性一是数据库本身被破坏二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。第26页/共62页 10.4 10.4 恢复的原理及其实现技术数据库恢复的基本原理十分简单,就是数据的冗余。数据库中任何一部分被破坏的或不正确的数据都可以利用存储在系统其它地方的冗余数据来修复。因此恢复系统应该提供两种类型的功能

15、:一种是生成冗余数据,即对可能发生的故障作某些准备;另一种是冗余重建,即利用这些冗余数据恢复数据库。生成冗余数据最常用的技术是登记日志文件和数据转储,在实际应用中,这两种方法常常结合起来一起使用。第27页/共62页10.4.1 10.4.1 登记日志文件(LoggingLogging)日志文件是用来记录事务对数据库的更新操作的文件。对数据库的每次修改,都将被修改项目的旧值和新值写在一个叫做运行日志的文件中,目的是为数据库的恢复保留详细的数据。典型的日志文件主要包含以下内容:1 1更新数据库的事务标识(标明是哪个事务);2 2操作的类型(插入、删除或修改)3 3操作对象;4 4更新前数据的旧值(

16、对于插入操作而言,没有旧值);第28页/共62页5 5更新前数据的新值(对于删除操作而言,没有新值);6 6事务处理中的各个关键时刻(事务的开始、结束及其真正回写的时间)。日志文件是系统运行的历史记载,必须高度可靠。所以一般都是双副本的,并且独立地写在两个不同类型的设备上。日志的信息量很大,一般保存在海量存储器上。在对数据库修改时,在运行日志中要写入一个表示这个修改的运行记录。把数据库的修改写到数据库和把表示这个修改的日志记录写到日志文件是两个不同的操作。为了防止在这两个操作之间发生故障后,运行日志中没有记录下这个修改,以后也无法撤消这个修改。为保证数据库是可恢复的,登记日志文件必须遵循两条原

17、则原则:第29页/共62页1.1.登记的次序严格按并发事务执行的时间次序;2.2.必须先写日志文件,后写数据库。先写原则蕴含了如下意义:如果出现故障,只可能是在日志文件中已经登记了所做的修改,但没有真正修改数据库,这样在系统重新启动进行恢复时,只是撤消或重做因发生事故而没有做过的修改,并不会影响数据库的正确性。而如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。第30页/共62页10.4.2 10.4.2 数据转储(Data DumpData Dump)数据转储是指定期地将整个数据库复制到多个存储设备如磁带、磁盘上保存起来的过程,它是数据库恢复中采用的基本手段。

18、转储的数据文本称为后备副本或后援副本,当数据库遭到破坏后就可利用后援副本把数据库有效地加以恢复。转储是十分耗费时间和资源的,不能频繁地进行,应该根据数据库使用情况确定一个适当的转储周期。按照转储方式转储可以分为海量转储和增量转储。海量转储是指每次转储全部数据库。增量转储每次只转储上次转储后被更新过的数据。第31页/共62页按照转储状态转储又可分为静态转储和动态转储。静态转储期间不允许有任何数据存取活动,因而需在当前用户事务结束之后进行,新用户事务又需在转储结束之后才能进行,这就降低了数据库的可用性。动态转储则不同,它允许转储期间继续运行用户事务,但产生的副本并不能保证与当前状态一致。解决的办法

19、是把转储期间各事务对数据库的修改活动登记下来,建立日志文件。因此,备用副本加上日志文件就能把数据库恢复到某一时刻的正确状态。第32页/共62页10.5 10.5 数据库恢复的策略根据故障类型的不同,应该采取不同的恢复策略。1 1、事务故障(Transaction FailureTransaction Failure)及其恢复事务故障表示由非预期的、不正常的程序结束所造成的故障。发生事务故障时,被迫中断的事务可能已对数据库进行了修改,为了消除该事务对数据库的影响,要利用日志文件中所记载的信息,强行回滚(ROLLBACKROLLBACK)该事务,将数据库恢复到修改前的初始状态。为此,要检查日志文件

20、中由这些事务所引起的发生变化的记录,取消这些没有完成的事务所做的一切改变。这类恢复操作称为事务撤消(UNDOUNDO),具体做法如下:第33页/共62页1 1反向扫描日志文件,查找该事务的更新操作。2 2对该事务的更新操作执行反操作,即对已经插入的新记录进行删除操作,对已删除的记录进行插入操作,对修改的数据恢复旧值,用旧值代替新值。这样由后向前逐个扫描该事务己做所有更新操作,并做同样处理,直到扫描到此事务的开始标记,事务故障恢复完毕。因此,一个事务是一个工作单位,也是一个恢复单位。一个事务越短,越便于对它进行UNDOUNDO操作。如果一个应用程序运行时间较长,则应该把该应用程序分成多个事务,用

21、明确的COMMITCOMMIT语句结束各个事务。第34页/共62页2 2、系统故障(System FailureSystem Failure)及其恢复系统故障发生后,对数据库的影响有两种情况:一种情况是一些未完成事务对数据库的更新已写入数据库,这样在系统重新启动后,要强行撤消(UNDOUNDO)所有未完成事务,清除这些事务对数据库所做的修改。这些未完成事务在日志文件中只有BEGIN BEGIN TRANSCATIONTRANSCATION标记,而无COMMITCOMMIT标记。另一种情况是有些己提交的事务对数据库的更新结果还保留在缓冲区中,尚未写到磁盘上的物理数据库中,这也使数据库处于不一致状

22、态,因此应将这些事务己提交的结果重新写入数据库。这类恢复操作称为事务的重做(REDOREDO)。这种己提交事务在日志文件中既有BEGIN TRANSCATIONBEGIN TRANSCATION标记,也有COMMITCOMMIT标记。第35页/共62页因此,系统故障的恢复要完成两方面的工作,既要撤消所有未完成的事务,还需要重做所有己提交的事务,这样才能将数据库真正恢复到一致的状态。具体做法如下:1 1正向扫描日志文件,查找尚未提交的事务,将其事务标识记入撤消队列。同时查找已经提交的事务,将其事务标识记入重做队列。2 2对撤消队列中的各个事务进行撤消处理。方法同事务故障中所介绍的撤消方法相同。3

23、 3对重做队列中的各个事务进行重做处理。进行重做处理的方法是:正向扫描日志文件,按照日志文件中所登记的操作内容,重新执行操作,使数据库恢复到最近某个可用状态。第36页/共62页3 3、介质故障(Media FailureMedia Failure)及其恢复介质故障是指系统在运行过程中,由于辅助存储器介质受到破坏,使存储在外存中的数据部分丢失或全部丢失。这需要装入发生介质故障前最新的后备数据库副本,然后利用日志文件重做该副本后所运行的所有事务。具体方法如下:1装入最新的数据库副本,使数据库恢复到最近一次转储时的可用状态。2装入最新的日志文件副本,根据日志文件中的内容重做已完成的事务。首先正向扫描

24、日志文件,找出发生故障前已提交的事务,将其记入重做队例。再对重做队列中的各个事务进行重做处理,第37页/共62页通过以上对三类故障的分析,我们可以看出故障发生后对数据库的影响有两种可能性:1数据库没有被破坏,但数据可能处于不一致状态。这是由事务故障和系统故障引起的,这种情况在恢复时,不需要重装数据库副本,直接根据日志文件,撤销故障发生时未完成的事务,并重做己完成的事务,使数据库恢复到正确的状态。这类故障的恢复是系统在重新启动时自动完成的,不需要用户干预。2数据库本身被破坏。这是由介质故障引起的,这种情况在恢复时,把最近一次转储的数据装入,然后借助于日志文件,再在此基础上对数据库进行更新,从而重

25、建了数据库。这类故障的恢复不能自动完成,需要DBA的介入,先由DBA重装最近转储的数据库副本和相应的日志文件的副本,再执行系统提供的恢复命令,具体的恢复操作由DBMS来完成。第38页/共62页数据库恢复的基本原理就是利用数据的冗余的。十分简单,实现的方法也比较清楚,但真正实现起来相当复杂,实现恢复的程序非常庞大,常常占整个系统代码的百分之十以上。数据库系统所采用的恢复技术是否行之有效,不仅对系统的可靠程度起着决定性使用,而且对系统的运行效率也有很大的影响,是衡量系统性能优劣的重要指标。第39页/共62页10.6 10.6 具有检查点的恢复技术一、问题的提出二、检查点技术三、利用检查点的恢复策略

26、第40页/共62页一、问题的提出两个问题搜索整个日志将耗费大量的时间REDO处理:重新执行,浪费了大量时间第41页/共62页解决方案具有检查点(checkpoint)的恢复技术在日志文件中增加检查点记录(checkpoint)增加重新开始文件恢复子系统在登录日志文件期间动态地维护日志第42页/共62页二、检查点技术检查点记录的内容1.建立检查点时刻所有正在执行的事务清单2.这些事务最近一个日志记录的地址重新开始文件的内容记录各个检查点记录在日志文件中的地址第43页/共62页具有检查点的日志文件和重新开始文件具有检查点的日志文件和重新开始文件 第44页/共62页动态维护日志文件的方法动态维护日志

27、文件的方法周期性地执行如下操作:建立检查点,保存数据库状态。具体步骤是:1.将当前日志缓冲区中的所有日志记录写入磁盘的日志文件上2.在日志文件中写入一个检查点记录3.将当前数据缓冲区的所有数据记录写入磁盘的数据库中4.把检查点记录在日志文件中的地址写入一个重新开始文件第45页/共62页建立检查点恢复子系统可以定期或不定期地建立检查点,保存数据库状态 定期按照预定的一个时间间隔,如每隔一小时建立一个检查点 不定期按照某种规则,如日志文件已写满一半建立一个检查点第46页/共62页三、利用检查点的恢复策略使用检查点方法可以改善恢复效率当事务T在一个检查点之前提交 T对数据库所做的修改已写入数据库写入

28、时间是在这个检查点建立之前或在这个检查点建立之时 在进行恢复处理时,没有必要对事务T执行REDO操作第47页/共62页Tc(检查点)Tf(系统故障)REDOUNDOUNDOREDOT2T3T4T5不要REDOT1系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复策略系统出现故障时,恢复子系统将根据事务的不同状态采取不同的恢复策略 第48页/共62页T1:在检查点之前提交T2:在检查点之前开始执行,在检查点之后故障点之前提交T3:在检查点之前开始执行,在故障点时还未完成T4:在检查点之后开始执行,在故障点之前提交T5:在检查点之后开始执行,在故障点时还未完成恢复策略:T3和T5在故障发

29、生时还未完成,所以予以撤销T2和T4在检查点之后才提交,它们对数据库所做的修改在故障发生时可能还在缓冲区中,尚未写入数据库,所以要REDOT1在检查点之前已提交,所以不必执行REDO操作第49页/共62页10.7 数据库镜像介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性介质故障恢复比较费时为预防介质故障,DBA必须周期性地转储数据库提高数据库可用性的解决方案数据库镜像(Mirror)第50页/共62页数据库镜像DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上DBMS自动保证镜像数据与主数据库的一致性,每当主数据库更新时,DBMS自动把更新后的数据复制过去第51页/共6

30、2页 镜像的实质也是备份,在同一时刻保存数据的两个或多个副本。镜像与转储本质不同:转储:定期或不定期的、间断、非实时镜像一般是OS的功能硬盘级的但DBMS为了防止介质出现故障而丢失数据,也提供了镜像功能.如果条件许可,尽量使用OS级的硬盘级的镜像 第52页/共62页 SQLServer:镜像连续、实时的将一个SQLServer设备上的信息复制到另一个设备上。对该设备操作的所有事件都复制到它的副本镜像设备上。如果两个设备中的一个损坏了,另一个设备由于保存了所有事件轨迹的最新拷贝,所以系统会完成自动切换,并保存系统连读工作。第53页/共62页工作原理如下图所示:第54页/共62页出现介质故障时可由

31、镜像磁盘继续提供使用 同时DBMS自动利用镜像磁盘数据进行数据库的恢复不需要关闭系统和重装数据库副本(如下图所示)第55页/共62页v没有出现故障时n可用于并发操作n一个用户对数据加排他锁修改数据,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁第56页/共62页频繁地复制数据自然会降低系统运行效率在实际应用中用户往往只选择对关键数据和日志文件镜像,而不是对整个数据库进行镜像第57页/共62页小结如果数据库只包含成功事务提交的结果,就说数据库处于一致性状态。保证数据一致性是对数据库的最基本的要求。事务是数据库的逻辑工作单位DBMS保证系统中一切事务的原子性、一致性、隔离性和持续性第58页/共62页DBMS必须对事务故障、系统故障和介质故障进行恢复恢复中最经常使用的技术:数据库转储和登记日志文件恢复的基本原理:利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库第59页/共62页常用恢复技术事务故障的恢复UNDO系统故障的恢复UNDO+REDO介质故障的恢复重装备份并恢复到一致性状态+REDO第60页/共62页提高恢复效率的技术检查点技术可以提高系统故障的恢复效率可以在一定程度上提高利用动态转储备份进行介质故障恢复的效率镜像技术镜像技术可以改善介质故障的恢复效率第61页/共62页感谢您的观看!第62页/共62页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁