《数据库原理》课件第9章 事务管理.ppt

上传人(卖家):momomo 文档编号:7938996 上传时间:2024-09-06 格式:PPT 页数:70 大小:715.50KB
下载 相关 举报
《数据库原理》课件第9章 事务管理.ppt_第1页
第1页 / 共70页
《数据库原理》课件第9章 事务管理.ppt_第2页
第2页 / 共70页
《数据库原理》课件第9章 事务管理.ppt_第3页
第3页 / 共70页
《数据库原理》课件第9章 事务管理.ppt_第4页
第4页 / 共70页
《数据库原理》课件第9章 事务管理.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

1、2024-9-6 1系统篇系统篇-数据库数据库保护保护第第9章章 事务管理事务管理2024-9-6 2主要内容主要内容v事务概述事务概述v并发控制并发控制v数据库恢复技术数据库恢复技术2024-9-6 3事务的概念事务的概念v事务定义事务定义事务是由一系列操作序列构成的程序执行单元,事务是由一系列操作序列构成的程序执行单元,这些操作要么都做,要么都不做,是一个不可分这些操作要么都做,要么都不做,是一个不可分割的工作单位。例如银行转帐。割的工作单位。例如银行转帐。SQL中事务的定义中事务的定义v事务以事务以Begin transaction开始,以开始,以Commit或或 Rollback结束结

2、束vCommit表示提交,事务正常结束表示提交,事务正常结束vRollback表示事务非正常结束,撤消事务已做的操作,表示事务非正常结束,撤消事务已做的操作,回滚到事务开始时状态回滚到事务开始时状态2024-9-6 4v银行转帐:事务银行转帐:事务T从从A帐户过户帐户过户50¥到¥到B帐户帐户T:read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);read(X):从数据库传送数据项:从数据库传送数据项X到事务的工作区中到事务的工作区中write(X):从事务的工作区中将数据项:从事务的工作区中将数据项X写回数据库写回数据库事务示例事务示例2024

3、-9-6 5事务示例事务示例v银行转帐示例:假设银行有一笔转帐业务,需要将帐户银行转帐示例:假设银行有一笔转帐业务,需要将帐户1 1的的$1000$1000转入帐户转入帐户2 2中。数据库应用程序至少需要执行以下几中。数据库应用程序至少需要执行以下几步完成此转帐功能(帐户关系步完成此转帐功能(帐户关系AccountsAccounts,有属性,有属性acctNoacctNo和和balancebalance,分别表示帐户号和该帐户的余额。,分别表示帐户号和该帐户的余额。):):读帐户读帐户1 1的资金余额,判断余额的资金余额,判断余额(balance)(balance)是否大于等于是否大于等于$1

4、000;$1000;Update accounts Set balance=balance-1000Update accounts Set balance=balance-1000Where acctNo=acct1Where acctNo=acct1;Update accounts Set balance=babalance+1000Update accounts Set balance=babalance+1000Where acctNo=acct2;Where acctNo=acct2;2024-9-6 6v原子性原子性(Atomicity)事务中包含的所有操作要么全做,要么全不做。事务

5、中包含的所有操作要么全做,要么全不做。原子性由原子性由恢复机制恢复机制实现。实现。v一致性一致性(Consistency)事务的隔离执行必须保证数据库的一致性。事务的隔离执行必须保证数据库的一致性。事务开始前,数据库处于一致性的状态;事务结事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态。束后,数据库必须仍处于一致性状态。数据库的一致性状态由数据库的一致性状态由用户用户来负责,由来负责,由并发控制并发控制机制机制实现。实现。如银行转帐,转帐前后两个帐户金额之和应保持如银行转帐,转帐前后两个帐户金额之和应保持不变。不变。事务特性(事务特性(ACID)2024-9-6 7

6、v隔离性隔离性(Isolation)系统必须保证事务不受其它并发执行事务的影响。系统必须保证事务不受其它并发执行事务的影响。对任何一对事务对任何一对事务T1,T2,在,在T1看来,看来,T2要么在要么在T1开开始之前已经结束,要么在始之前已经结束,要么在T1完成之后再开始执行。完成之后再开始执行。隔离性通过隔离性通过并发控制机制并发控制机制实现。实现。v持久性持久性(Durability)一个事务一旦提交之后,它对数据库的影响必须是一个事务一旦提交之后,它对数据库的影响必须是永久的永久的系统发生故障不能改变事务的持久性系统发生故障不能改变事务的持久性持久性通过持久性通过恢复机制恢复机制实现实现

7、事务特性(事务特性(ACID)(续)(续)2024-9-6 8事务的状态事务的状态活动状态活动状态失败状态失败状态部分部分提交状态提交状态提交状态提交状态中止状态中止状态初始状态初始状态事务无法继事务无法继续正常执行续正常执行事务回滚,数据库恢事务回滚,数据库恢复到事务开始前状态复到事务开始前状态最后一条语最后一条语句被执行后句被执行后成功完成,永成功完成,永久写入数据库久写入数据库2024-9-6 9事务调度事务调度v事务的调度事务的调度事务的执行顺序称为一个调度,表示事务的指令在系统中事务的执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序执行的时间顺序一组事务的调度必须保证一组事

8、务的调度必须保证v包含了所有事务的操作指令包含了所有事务的操作指令v一个事务中指令的顺序必须保持不变一个事务中指令的顺序必须保持不变串行调度串行调度v在串行调度中,属于同一事务的指令紧挨在一起在串行调度中,属于同一事务的指令紧挨在一起v对于有对于有n个事务的事务组,可以有个事务的事务组,可以有n!个有效调度!个有效调度并行调度并行调度v在并行调度中,来自不同事务的指令可以交叉执行在并行调度中,来自不同事务的指令可以交叉执行v当并行调度等价于某个串行调度时,则称它是正确的当并行调度等价于某个串行调度时,则称它是正确的2024-9-6 10v并行并行 Vs 串行串行基本比较基本比较v并行事务会破坏

9、数据库的一致性并行事务会破坏数据库的一致性v串行事务效率低串行事务效率低并行的优点并行的优点v一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量可以并发执行,以提高系统的吞吐量v系统中存在着周期不等的各种事务,串行会导致难于预测的时延。系统中存在着周期不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均响应时间响应时间核心问题核心问题在保证一致性的前提下最大限度地提高并发度在保证一致性的前提下

10、最大限度地提高并发度2024-9-6 11事务执行示例事务执行示例T1read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);T2read(A);temp:=A 0.1A:=A temp;write(A);read(B);B:=B+temp;write(B);从从A过户过户50¥到¥到B从从A过户存款过户存款的的10%到到B开始状态:开始状态:A=1000¥B=2000¥A+B=3000¥2024-9-6 12 read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);read(A);temp:=A0.1 A

11、:=A temp;write(A);read(B);B:=B+temp;write(B);T1T2A=950¥B=2050¥结束状态:结束状态:A=855¥B=2145¥A+B=3000¥串串行行调调度度1 12024-9-6 13 read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);read(A);temp:=A 0.1 A:=A temp;write(A);read(B);B:=B+temp;write(B);T1T2A=900¥B=2100¥结束状态:结束状态:A=850¥B=2150¥A+B=3000¥串串行行调调度度2 22024-9-

12、6 14 read(A);A:=A 50;write(A);read(B);B:=B+temp;write(B);T1T2A=950¥B=2000¥结束状态:结束状态:A=855¥B=2145¥A+B=3000¥read(B);B:=B+50;write(B);read(A);temp:=A 0.1 A:=A temp;write(A);A=855¥B=2000¥A=855¥B=2050¥并并行行调调度度3 32024-9-6 15并发调度事务中可能出现的问题并发调度事务中可能出现的问题v丢失更新丢失更新v读脏数据读脏数据v不可重复读不可重复读2024-9-6 16丢失更新丢失更新v定义定义两

13、个事务两个事务T1T1和和T2T2读入同一数据并修改,读入同一数据并修改,T2T2提交提交的结果破坏了的结果破坏了T1T1提交的结果,导致提交的结果,导致T1T1的的修改丢失修改丢失v示例示例2024-9-6 17 read(A);A:=A 50;B:=B+temp;write(B);T1T2A=1000¥B=2000¥结束状态:结束状态:A=950¥B=2100¥A+B=3050¥write(A);read(B);B:=B+50;write(B);read(A);temp:=A 0.1 A:=A temp;write(A);read(B);A=900¥B=2000¥A=950¥B=2000¥

14、A=950¥B=2050¥并并行行调调度度4 42024-9-6 18读脏数据读脏数据v定义定义事务事务T1T1修改某一数据,并将其写回磁盘,事务修改某一数据,并将其写回磁盘,事务T2T2读取同一数据后,读取同一数据后,T1T1由于某种原因被撤消,这时由于某种原因被撤消,这时T1T1已修改过的数据恢复原值,已修改过的数据恢复原值,T2T2读到的数据与数读到的数据与数据库中数据不一致,则据库中数据不一致,则T2T2读到的数据就是读到的数据就是脏数据脏数据v示例示例2024-9-6 19read(A);A1:=A;read(B);B1:=B;A1+B1=2950;read(B);B:=B+50;w

15、rite(B);T1T2A=1000¥B=2000¥read(A);A:=A 50;write(A);并并行行调调度度5 52024-9-6 20不能重复读不能重复读v定义定义事务事务T1T1读取某一数据后,事务读取某一数据后,事务T2T2对其做了修改,当对其做了修改,当T1T1再再次读取该数据时,得到与前次不同的值次读取该数据时,得到与前次不同的值v示例示例2024-9-6 21 read(A);A1:=AT1T2A=1000¥B=2000¥read(A);A:=A 50;write(A);read(B);B:=B+50;write(B);read(B);B1:=BA1+B1=3050A=9

16、50¥B=2050¥并并行行调调度度6 62024-9-6 22v并发调度的可串行性并发调度的可串行性可串行化的调度:多个事务的并发执行是正确的,可串行化的调度:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时当且仅当其结果与按某一次序串行地执行它们时的结果相同。的结果相同。正确调度:一个给定的并发调度,当且仅当它是正确调度:一个给定的并发调度,当且仅当它是可串行化的。可串行化的。并行调度的可串行化并行调度的可串行化2024-9-6 23 T1 T2 T1 T2 Slock B Slock A Y=B=2 X=A=2 Unlock B Unlock A X lock A

17、Xlock B A=Y+1 B=X+1 写回写回A(=3)写回写回B(=3)Unlock A Unlock B Slock A Slock B X=A=3 Y=B=3 Unlock A Unlock B X lock B Xlock A B=X+1 A=Y+1 写回写回B(=4)写回写回 A(=4)Unlock B Unlock (a)串行调度串行调度 (b)串行调度串行调度 并行事务的不同调度并行事务的不同调度2024-9-6 24 T1 T2 T1 T2 S lock B S lock B Y=B=2 Y=B=2 S lock A Unlock B X=A=2 X lock A Unloc

18、k B S lock A Unlock A A=Y+1 等待等待 X lock A 写回写回A(=3)等待等待 A=Y+1 Unlock A 等待等待 写回写回A(=3)X=A=3 X lock B Unlock A B=X+1 X lock B 写回写回B(=3)B=X+1 Unlock A 写回写回B(=4)Unlock B Unlock B (c)不可串行化的调度不可串行化的调度 (d)可串行化的调度可串行化的调度 并行事务的不同调度并行事务的不同调度(续)续)2024-9-6 25并行调度的可串行化(续)并行调度的可串行化(续)v指令的顺序指令的顺序考虑一个调度考虑一个调度S中的两条连

19、续指令(仅限于中的两条连续指令(仅限于read与与 write操作)操作)Ii与与Ij,分别属于事务,分别属于事务Ti与与TjIi=read(Q),Ij=read(Q);Ii=read(Q),Ij=write(Q);Ii=write(Q),Ij=read(Q);Ii=write(Q),Ij=write(Q);在在 情况下,情况下,Ii与与Ij的次序无关紧要。其余情况下,的次序无关紧要。其余情况下,Ii与与Ij的次序不同,其执行结果也不同,数据库最终状态也不同的次序不同,其执行结果也不同,数据库最终状态也不同2024-9-6 26并行调度的可串行化(续)并行调度的可串行化(续)v冲突指令冲突指令

20、当两条指令是不同事务在当两条指令是不同事务在相同数据项相同数据项上的操作,并且其中至少有一上的操作,并且其中至少有一个是个是write指令时,则称这两条指令是冲突的指令时,则称这两条指令是冲突的如在、情况下,如在、情况下,I Ii i与与I Ij j 是冲突的是冲突的非冲突指令交换次序不会影响调度的最终结果非冲突指令交换次序不会影响调度的最终结果v冲突等价冲突等价如果调度如果调度S可以经过一系列非冲突指令交换转换成调度可以经过一系列非冲突指令交换转换成调度S,则称调度,则称调度S与与S是冲突等价的是冲突等价的v冲突可串行化冲突可串行化当一个调度当一个调度S与一个串行调度与一个串行调度冲突等价冲

21、突等价时,则称该调度是冲突可串行时,则称该调度是冲突可串行化的化的如并行调度如并行调度3是冲突可串行化的是冲突可串行化的2024-9-6 27示例示例示例read(A);write(A);read(B);write(B);T1T2read(B);write(B);read(A);write(A);read(A);write(A);read(B);write(B);T1T2write(B);read(A);write(A);read(B);read(A);write(A);read(B);write(B);write(B);read(A);write(A);read(B);交换交换1 1交换交换

22、2 2交换交换3 3read(A);write(A);read(B);write(B);read(B);write(B);read(A);write(A);并并行行调调度度3 3串串行行化化2024-9-6 28封锁机制封锁机制v所谓所谓并发控制并发控制就是要用正确的方式调度并发操作,就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行避免造成数据的不一致性,使一个用户事务的执行不受其他事务的干扰。不受其他事务的干扰。v另一方面,对数据库的应用有时允许某些不一致性,另一方面,对数据库的应用有时允许某些不一致性,例如,有些统计工作涉及数据量很大,读到一些脏例如,有些统计工

23、作涉及数据量很大,读到一些脏数据对统计精度没什么影响,这时可以降低对一致数据对统计精度没什么影响,这时可以降低对一致性的要求以减少系统开销性的要求以减少系统开销v并发控制的主要方法是采用并发控制的主要方法是采用封锁机制封锁机制。2024-9-6 29v封锁封锁事务事务T在对某个数据对象操作之前,先向系统发在对某个数据对象操作之前,先向系统发出请求,对其加锁。加锁后事务出请求,对其加锁。加锁后事务T就对该数据对就对该数据对象有了一定的控制,在事务象有了一定的控制,在事务T释放它的锁之前,释放它的锁之前,其他的事务不能更新此数据对象。其他的事务不能更新此数据对象。v排它锁(写锁,排它锁(写锁,X锁

24、)锁)v共享锁(读锁,共享锁(读锁,S锁)锁)封锁机制(续)封锁机制(续)2024-9-6 30 T2 T1 X S X N N Y S N Y Y Y Y Y Y=Yes,相容的请求;,相容的请求;N=No,不相容的请求,不相容的请求 封锁类型的相容矩阵封锁类型的相容矩阵2024-9-6 31v封锁协议封锁协议对数据对象加锁时,还需要约定一些规则,称这些规则对数据对象加锁时,还需要约定一些规则,称这些规则为封锁协议。为封锁协议。v一级封锁协议一级封锁协议事务事务T在修改数据之前必须先对其加在修改数据之前必须先对其加X锁,直到事务结束锁,直到事务结束才释放。才释放。v二级封锁协议二级封锁协议一

25、级封锁协议加上事务一级封锁协议加上事务T在读取数据在读取数据R之前必须先对其加之前必须先对其加S锁,读完后即可释放锁,读完后即可释放S锁。锁。v三级封锁协议三级封锁协议一级封锁协议加上事务一级封锁协议加上事务T在读取数据在读取数据R之前必须先对其加之前必须先对其加S锁,直到事务结束才释放。锁,直到事务结束才释放。封锁机制(续)封锁机制(续)2024-9-6 32v活锁和死锁活锁和死锁活锁活锁v某一事务的请求可能永远得不到,该事务一直处于等待状态某一事务的请求可能永远得不到,该事务一直处于等待状态v解决方法:先来先服务策略解决方法:先来先服务策略死锁死锁v两个事务处于相互等待状态,永远不能结束两

26、个事务处于相互等待状态,永远不能结束死锁的预防死锁的预防v一次封锁法一次封锁法降低了并发度降低了并发度v顺序封锁法顺序封锁法死锁的诊断与解除死锁的诊断与解除v超时法,等待图法超时法,等待图法封锁机制(续)封锁机制(续)2024-9-6 33 T1 T2 T1 T2 T1 T2 (1)读读A=16 (1)读读A=50 (1)读读C=100 读读B=100 C C2 求和求和C=150 写回写回C (2)读读A=16 (2)(2)读读B=100 读读C=B B2 ROLLBACK 200 写回写回B C恢复为恢复为100 (3)AA-1 写回写回A=15 (3)读读A=50 (4)AA-1 读读B

27、=200 写回写回A=15 和和=250 (验算不对验算不对)(a)丢失修改丢失修改 (b)不能重复读不能重复读 (c)读脏数据读脏数据2024-9-6 34 T1 T2 T1 T2 T1 T2(1)获得获得 (1)SL A (1)获得获得 XL C XL A SL B 读读C=200(2)读读A=16 读读A,B C C2 请求请求 求和求和=150 请求请求 写回写回C=200 XL A (2)XL B (2)请求请求 等待等待 等待等待 SL C(3)AA-1 等待等待 等待等待 等待等待 写回写回A=15 等待等待 (3)读读A,B 等待等待 (3)ROLLBACK 等待等待 Comm

28、it 等待等待 求和求和=150 等待等待 (C恢复为恢复为100)等待等待 Unlock X 等待等待 commit 等待等待 Ulock C 等待等待(4)获得获得 Ulock A 等待等待 (4)获得获得 XL A Ulock B 等待等待 SL C 读读A=15 (4)X lockB 读读c=100(5)AA-1 读读B=100 (5)Commit 写回写回A=14 B B2 Unlock C Commit 写回写回B=200 Unlock X(a)没有丢失修改 (b)可重复读 (c)不再读“脏”数据2024-9-6 35v两段锁协议两段锁协议作用:保证可串行性作用:保证可串行性指所有

29、事务必须分两个阶段对数据项加锁和解锁。指所有事务必须分两个阶段对数据项加锁和解锁。若并发执行的所有事务均遵守两段锁协议,则对这些事若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。务的任何并发调度策略都是可串行化的。两段锁的含义:事务分为两个阶段两段锁的含义:事务分为两个阶段v第一个阶段获得封锁,也称扩展阶段第一个阶段获得封锁,也称扩展阶段v第二阶段是释放阶段,也称收缩阶段第二阶段是释放阶段,也称收缩阶段定理:若所有事务均遵守两段锁协议,则这些事务的所定理:若所有事务均遵守两段锁协议,则这些事务的所有并行调度都是可串行化的。有并行调度都是可串行化的。两段锁协议

30、是可串行化调度的充分条件而不是必要条件。两段锁协议是可串行化调度的充分条件而不是必要条件。示例:示例:XL AXL BSL CUnlock BUL AUL C;YXL AUL AXL BSL CUL CUL B;N2024-9-6 36T1T2 SLOCK Y读读Y=20XLOCK XUNLOCK Y读读X=10X=X+Y写回写回X=30UNLOCK XSLOCK X等待等待等待等待等待等待等待等待等待等待获得获得SLOCK X读读X=10XLOCK YUNLOCK X读读Y=20Y=X+Y写回写回Y=30UNLOCK Y遵守遵守两段锁两段锁协议协议的的并并行行调调度度2024-9-6 37课

31、内练习课内练习设有三个事务设有三个事务T1、T2、T3,它们执行的操作分别是:,它们执行的操作分别是:T1:A+100T2:A*2T3:A/2假设这三个事务进行并发操作,试讨论它们可能实施假设这三个事务进行并发操作,试讨论它们可能实施的调度。假设的调度。假设A的初始值为的初始值为100,各调度的最后结,各调度的最后结果是什么。果是什么。2024-9-6 38v设事务设事务T1、T2的并发操作如图(的并发操作如图(a)、()、(b)所示,)所示,两个并发操作中分别存在什么问题?两个并发操作中分别存在什么问题?T1T1T1T2 读读A=100 B=50 A+B=150 读读A=200 B=50 A

32、+B=250(验证错误)(验证错误)读读A=100A=A*2写回写回A=200读读B=100 B=B+50 写回写回B=150读读B=100B=B*2写回写回B=2002024-9-6 39v假设有零件假设有零件100个,个,T1事务领走事务领走50个,个,T2事事务领走务领走20个,其执行时个,其执行时间如图所示,应该如何间如图所示,应该如何实现这两个事务的并发实现这两个事务的并发控制?控制?T1T2 读零件数目读零件数目 取走取走50读零件数目读零件数目取走取走202024-9-6 40事务和事务日志事务和事务日志v一个事务包括一个或许多个操作的集合,可以是:插一个事务包括一个或许多个操作

33、的集合,可以是:插入、修改、删除等命令或更复杂的操作。入、修改、删除等命令或更复杂的操作。v事务的特性:事务的特性:原子性:一个事务中的操作是不可分割的,要么全部执行原子性:一个事务中的操作是不可分割的,要么全部执行成功,要么全部不执行。成功,要么全部不执行。一致性:事务执行的前后,数据库中的数据都处于一致性一致性:事务执行的前后,数据库中的数据都处于一致性状态。状态。独立性:事务直接不能互相干扰。独立性:事务直接不能互相干扰。永久性:事务一旦执行成功,则对数据库的影响是永久的。永久性:事务一旦执行成功,则对数据库的影响是永久的。2024-9-6 41事务和事务日志(续)事务和事务日志(续)v

34、如果提交了一个事务,如果提交了一个事务,SQL ServerSQL Server就会在事就会在事务日志中记录所有有关该事务的信息。务日志中记录所有有关该事务的信息。v为一个事务记录的数据总量取决于以下几个为一个事务记录的数据总量取决于以下几个方面:方面:更改的数据量更改的数据量受影响的索引量受影响的索引量作为事务的结果,必须分配或释放的页的数量作为事务的结果,必须分配或释放的页的数量2024-9-6 42事务日志条目事务日志条目v开始条目开始条目v记录数据修改记录数据修改v进行数据修改进行数据修改v提交事务提交事务v将日志页转存于磁盘将日志页转存于磁盘2024-9-6 43事务日志条目示例事务

35、日志条目示例v操作:更新一条记录,日志文件将增加:操作:更新一条记录,日志文件将增加:一个数据删除记录一个数据删除记录,包括原有行中所有数据包括原有行中所有数据一个数据插入记录,包括修改后行中所有数据一个数据插入记录,包括修改后行中所有数据一个受该事务影响的每个索引的索引删除记录一个受该事务影响的每个索引的索引删除记录一个受该事务影响的每个索引的索引插入记录一个受该事务影响的每个索引的索引插入记录一个用于每个新数据或索引页的页分配记录,一个用于每个新数据或索引页的页分配记录,和一个用于每个释放数据或索引页的页释放记录和一个用于每个释放数据或索引页的页释放记录2024-9-6 442024-9-

36、6 45数据库恢复概述数据库恢复概述v计算机系统中不可避免计算机系统中不可避免:硬件的故障硬件的故障软件的错误软件的错误操作员的失误操作员的失误恶意的破坏恶意的破坏v故障故障:造成运行事务非正常中断,影响数据库中数据的正确性造成运行事务非正常中断,影响数据库中数据的正确性;重则破坏数据库,使数据库中全部或部分数据丢失重则破坏数据库,使数据库中全部或部分数据丢失v数据库管理系统(恢复子系统)数据库管理系统(恢复子系统):把数据库从错误状态恢复到某一已知的正确状态(亦称把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复。为一致状态或完整状态)的功能,这

37、就是数据库的恢复。2024-9-6 46故障的种类故障的种类v事务内部的故障事务内部的故障预期的预期的v可通过事务程序本身发现可通过事务程序本身发现v示例示例非预期的非预期的v不能由应用程序处理的,如运算溢出、并行事务发生死锁而被选不能由应用程序处理的,如运算溢出、并行事务发生死锁而被选中撤销该事务等中撤销该事务等v系统故障(软故障,系统故障(软故障,Soft CrashSoft Crash)指造成系统停止运转的任何事件,使得统要重新启动指造成系统停止运转的任何事件,使得统要重新启动中央处理器故障、操作系统故障、突然停电中央处理器故障、操作系统故障、突然停电v介质故障(硬故障,介质故障(硬故障

38、,Hard CrashHard Crash)外存故障,如磁盘的磁头碰撞,瞬时的强磁场干扰外存故障,如磁盘的磁头碰撞,瞬时的强磁场干扰v计算机病毒计算机病毒2024-9-6 47v总结,对数据库的影响可能性总结,对数据库的影响可能性数据库本身被破坏数据库本身被破坏数据库没有破坏,但数据可能不正确,因为事务的运行数据库没有破坏,但数据可能不正确,因为事务的运行被中止所造成被中止所造成v恢复的基本原理:冗余恢复的基本原理:冗余数据库中任何一部分的数据,可以根据存储在系统别处数据库中任何一部分的数据,可以根据存储在系统别处的冗余数据来重建的冗余数据来重建v恢复的最常用方法:恢复的最常用方法:转储和登记

39、日志文件转储和登记日志文件故障的种类(续)故障的种类(续)2024-9-6 48恢复的基本原理恢复的基本原理v恢复的基本原理十分简单。可以用一个词来恢复的基本原理十分简单。可以用一个词来概括:冗余。即数据库中任何一部分被破坏概括:冗余。即数据库中任何一部分被破坏的或不正确的数据可以根据存储在系统别处的或不正确的数据可以根据存储在系统别处的冗余数据来重建。的冗余数据来重建。v恢复机制涉及的两个关键问题是:恢复机制涉及的两个关键问题是:第一,如何建立第一,如何建立冗余数据冗余数据;第二,如何利用这些冗余数据实施第二,如何利用这些冗余数据实施数据库恢复数据库恢复。v建立冗余数据最常用的技术是建立冗余

40、数据最常用的技术是数据转储和登记日志数据转储和登记日志文件文件。通常在一个数据库系统中,这两种方法是一。通常在一个数据库系统中,这两种方法是一起使用的。起使用的。2024-9-6 49v数据转储数据转储后备副本或后援副本后备副本或后援副本转储周期转储周期静态转储和动态转储静态转储和动态转储海量转储和增量转储海量转储和增量转储v登记日志文件登记日志文件日志文件的格式和内容日志文件的格式和内容v记录为单位和数据块为单位记录为单位和数据块为单位日志文件的作用日志文件的作用登记日志文件:登记日志文件:“先写日志文件先写日志文件”的原则的原则 恢复的实现技术恢复的实现技术2024-9-6 50v转储转储

41、DBADBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程v后备副本或后援副本:备用的数据文本后备副本或后援副本:备用的数据文本v静态转储静态转储转储期间不允许(或不存在)对数据库进行任何存取、修改活动转储期间不允许(或不存在)对数据库进行任何存取、修改活动v动态转储动态转储转储期间允许对数据库进行存取或修改转储期间允许对数据库进行存取或修改即转储和用户事务可以并发执行即转储和用户事务可以并发执行v海量转储海量转储每次转储全部数据库每次转储全部数据库v增量转储增量转储每次只转储上次转储后更新过的数据每次只转储上次转储后更新过的数

42、据数据转储数据转储2024-9-6 51v静态转储静态转储简单简单降低数据库的可用性降低数据库的可用性v动态转储动态转储转储结束时后援副本上的数据并不能保证正确有效转储结束时后援副本上的数据并不能保证正确有效示例:在转储期间的某时刻示例:在转储期间的某时刻T1T1系统把数据系统把数据A=100A=100转储到转储到了磁带上,而在时刻了磁带上,而在时刻T2T2,某一事务对,某一事务对A A进行了修改使进行了修改使A=200A=200。转储结束,后援副本上的。转储结束,后援副本上的A A已是过时的数据了。已是过时的数据了。为此,必须把转储间各事务对数据库的修改活动登记下来,为此,必须把转储间各事务

43、对数据库的修改活动登记下来,建立日志文件(建立日志文件(log filelog file)。)。这样,后援副本加上日志文件就能把数据库恢复到某一时刻这样,后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态。的正确状态。数据转储(续)数据转储(续)2024-9-6 52v日志文件日志文件用来记录对数据库每一次更新活动的文件用来记录对数据库每一次更新活动的文件v登记日志文件登记日志文件登记记录主要包括:登记记录主要包括:v执行操作的事务标识、操作类型、更新前数据的旧值(对插入执行操作的事务标识、操作类型、更新前数据的旧值(对插入操作而言此项为空值)、更新后的新值(对删除操作而言此项操作而言此

44、项为空值)、更新后的新值(对删除操作而言此项为空值)为空值)登记次序严格按并行事务操作执行的时间次序,同时遵登记次序严格按并行事务操作执行的时间次序,同时遵循循“先写日志文件先写日志文件”的规则。的规则。登记日志文件登记日志文件2024-9-6 53v事务恢复事务恢复利用日志文件恢复事务的过程分为二步:利用日志文件恢复事务的过程分为二步:v从头扫描日志文件,找出哪些事务在故障发生时已经结束(这些事务有从头扫描日志文件,找出哪些事务在故障发生时已经结束(这些事务有BEGIN TRANSACTIONBEGIN TRANSACTION和和COMMITCOMMIT记录),哪些事务尚未结束(这些事务有记

45、录),哪些事务尚未结束(这些事务有BEGIN TRANSACTIONBEGIN TRANSACTION记录,无记录,无COMMITCOMMIT记录)。记录)。v对尚未结束的事务进行撤销(也称对尚未结束的事务进行撤销(也称UNDOUNDO)处理,对已经结束的事务进行)处理,对已经结束的事务进行重做(重做(REDOREDO)处理。)处理。vUNDOUNDO处理的方法:处理的方法:反向扫描日志文件,对每个反向扫描日志文件,对每个UNDOUNDO事务的更新操作执行反操作。事务的更新操作执行反操作。vREDOREDO处理的方法:处理的方法:正向扫描日志文件,重新执行登记的操作。正向扫描日志文件,重新执行

46、登记的操作。v利用转储和日志文件可以有效的恢复数据库。利用转储和日志文件可以有效的恢复数据库。恢复的实现技术(续)恢复的实现技术(续)2024-9-6 54正常运行正常运行 转转 储储 运运 行行 事事 务务故障发生点故障发生点TaTbTf重装后备副本重装后备副本重新运行事务重新运行事务 恢恢 复复转储和恢复转储和恢复2024-9-6 55正常运行正常运行 静态转储静态转储 运运 行行 事事 务务故障发生点故障发生点TaTbTf 登记日志文件登记日志文件重装后备副本重装后备副本利用日志文件恢复事务利用日志文件恢复事务介质故障恢复介质故障恢复 继续运行继续运行 登记日志文件登记日志文件利用日志文

47、件恢复利用日志文件恢复2024-9-6 56v恢复策略恢复策略事务故障的恢复事务故障的恢复v发生后由系统自动完成发生后由系统自动完成系统故障的恢复系统故障的恢复v重启系统,由系统自动完成重启系统,由系统自动完成介质故障的恢复介质故障的恢复v由由DBADBA重装数据库重装数据库具有检查点的恢复技术具有检查点的恢复技术数据库镜像数据库镜像恢复策略恢复策略2024-9-6 57BEGIN TRANSACTIONBEGIN TRANSACTION读账户甲的余额读账户甲的余额BALANCEBALANCE;BALANCE=BALANCE-AMOUNTBALANCE=BALANCE-AMOUNT;(;(Am

48、ountAmount为转账金额)为转账金额)IF(BALANCE0)THENIF(BALANCE0)THEN 打印打印金额不足,不能转帐金额不足,不能转帐;ROLLBACKROLLBACK;(撤销刚才的修改,恢复;(撤销刚才的修改,恢复事务)事务)ELSE ELSE 读账户乙的余额读账户乙的余额BALANCE1BALANCE1;BALANCE1=BALANCE1+AMOUNTBALANCE1=BALANCE1+AMOUNT;写回写回BALANCE1BALANCE1;COMMITCOMMIT;事务内部的故障事务内部的故障2024-9-6 58事务内部的故障事务内部的故障v事务内部更多的故障是非预

49、期的,是不能由事务内部更多的故障是非预期的,是不能由应用程序处理的。这类非预期的故障称为事应用程序处理的。这类非预期的故障称为事务故障。如务故障。如:运算溢出;运算溢出;并发事务发生死锁而被选中撤消该事务、违反了并发事务发生死锁而被选中撤消该事务、违反了某些完整性限制等。某些完整性限制等。v事务故障意味着:事务故障意味着:事务没有达到预期的终点(事务没有达到预期的终点(COMMITCOMMIT或者显式的或者显式的ROLLBACKROLLBACK););数据库可能处于不正确状态数据库可能处于不正确状态。2024-9-6 59事务撤消事务撤消(UNDO)(UNDO)v恢复程序要在不影响其它事务运行

50、的情况下恢复程序要在不影响其它事务运行的情况下:强行回滚(强行回滚(ROLLBACKROLLBACK)该事务,即撤消该事务已)该事务,即撤消该事务已经作出的任何对数据库的修改,使得该事务好象经作出的任何对数据库的修改,使得该事务好象根本没有启动一样。根本没有启动一样。v这类恢复操作称为事务撤消(这类恢复操作称为事务撤消(UNDOUNDO)。)。2024-9-6 60事务故障的恢复事务故障的恢复v事务故障的恢复是由事务故障的恢复是由系统自动完成系统自动完成的,对用户的,对用户是透明的。系统的恢复步骤是:是透明的。系统的恢复步骤是:v1.反向扫描文件日志(即从最后向前扫描日志文反向扫描文件日志(即

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《数据库原理》课件第9章 事务管理.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|