第7章数据库系统的恢复和并发控制技术_第1页
第7章数据库系统的恢复和并发控制技术_第2页
第7章数据库系统的恢复和并发控制技术_第3页
第7章数据库系统的恢复和并发控制技术_第4页
第7章数据库系统的恢复和并发控制技术_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

7.1事务的概念7.2数据库恢复技术7.3数据库并发控制7.4基于封锁的并发控制技术第7章数据库系统的恢复和并发控制技术7.1事务的概念事务:是一个不可分割的操作序列,该操作序列要么全做,要么全不做。事务和程序事务的开始与结束隐式控制显式控制强调:事务和程序是两个概念。一个程序中可以包含多个事务。隐式控制:由DBMS按缺省规定自动划分。显式控制:

BEGINTRANSACTION

[事务开始]COMMIT

[事务提交,重新改写数据库]ROLLBACK

[事务提交,发生错误撤消]BEGINTRANSACTIONINSERTINTOS(S#,Sname,Sage,Sdept)VALUES(‘10002’,’李娜’,18,‘计算机’)COMMIT例如:

BEGINTRANSACTIONDELETEFROMSWHERES#=‘10002’;DELETEFROMSCWHERES#=‘10002’;ROLLBACK7.1事务的概念事务的ACID特性AtomicityConsistencyIsolationDurability1、原子性(Atomicity):

事务是不可分割的工作单位2、一致性(Consistency)事务提交后,数据库从一个一致性状态变到另一个一致性状态。3、隔离性(Isolation)在事务完成之前,它对数据库产生的结果不能被其它事务引用。4、持续性(Durability)一旦事务执行成功(提交),其对数据库产生的效果永久有效。事务的性质(ACID)7.1事务的概念事务管理功能保证事务的ACID特性事务ACID特性可能遭到破坏的原因:多个事务并行运行时,多个事务中的操作交叉执行;事务正在执行时,被强迫终止。数据库的恢复和并发控制7.2数据库恢复硬件故障、软件故障、操作失误、恶意破坏等,导致事务运行的非正常中断,甚至破坏数据库,造成数据丢失数据库恢复:把数据库从错误状态恢复到某一个已知的正确状态7.2数据库恢复

一、数据库的故障种类事务内部故障系统故障介质故障计算机病毒一、数据库的故障种类事务内部故障银行转帐业务:从帐号甲将一笔金额转入帐号乙BEGINTRANSACTION

读取帐号甲的余额BALANCE; BALANCE=BALANCE–AMOUNT;

写回BALANCE;

if(BALANCE<0)then{ROLLBACK;} else{

读取帐号乙的余额BALANCE1; BALANCE1=BALANCE1+AMOUNT;

写回BALANCE1;

COMMIT;}一、数据库的故障种类事务内部故障非预期的事务内部故障:运算溢出、违约处理办法:强行回滚ROLLBACK该事务,即事务撤销(UNDO操作)一、数据库的故障种类系统故障系统停机,需要重启。如CPU故障、OS故障、DBMS代码错误、系统断电影响正在运行的事务,但不会破坏数据库处理办法:(1)UNDO所有未完成的事务;(2)REDO所有已提交的事务一、数据库的故障种类介质故障硬故障:磁盘损坏、磁头碰撞、瞬间强磁场干扰等出现概率小、破坏性非常大计算机病毒破坏系统、修改数据一、数据库的故障种类各类故障的影响数据库本身被破坏数据库没有被破坏,但数据可能不正确如何恢复呢?冗余两个关键问题:

1如何建立冗余数据

2如何利用冗余数据实施数据库恢复7.2数据库恢复

二、数据库恢复技术冗余二、数据库恢复技术如何建立冗余数据数据转储登录日志文件数据转储DBA定期地将整个数据库复制到其它外存上保存的过程后备副本/后援副本(BACKUP)数据转储静态转储:在系统空闲的时候进行,转储期间不允许对数据库进行操作。优点:简单、保证副本和数据库数据的一致性;缺点需等待。动态转储:转储期间允许对数据库进行操作优点:效率高;缺点是不能保证副本和数据库数据的一致性,必须记录转储期间各事务对数据库的修改活动(日志文件)两种转储方式:海量转储:每次转储数据库中的全部数据增量转储:每次转储上一次转储后更新过的数据

两种转储状态动态转储静态转储

两种转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储二、数据库恢复技术登录日志文件用来记录事务对数据库的更新操作的文件两种格式的日志文件:(1)以记录为单位的日志文件(2)以数据块为单位的日志文件例如:以记录为单位的日志文件 各个事务的开始标记 各个事务的结束标记 各个事务的所有更新操作日志记录:事务标识操作类型操作对象更新前的旧值更新后的新值二、数据库恢复技术日志文件的作用:进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。事务故障和系统故障恢复必须用日志文件;在动态转储方式中必须建立日志文件,并结合后备副本和日志文件对数据库进行有效的恢复;静态转储时也可建立日志文件二、数据库恢复技术登记日志文件的原则先来先登记原则:严格按照并发事务执行的时间顺序登记;先写日志文件原则:必须先写日志文件,后写数据库。数据库镜像:自动将数据库中的全部数据或关键数据复制到另外一张盘上。应用1应用2应用3应用4update复制readreadread应用1应用2应用3应用4update恢复readread(a)(b)read镜像镜像缺点:降低系统效率四、数据库恢复策略1.事务故障的恢复2.系统故障的恢复3.介质故障的恢复对于不同的故障类型要采用不同的恢复策略P1717.3并发控制多用户数据库系统事务执行方式串行执行:ACID无破坏,效率低并发执行:ACID可能破坏,效率高交叉并发:InterleavedConcurrency同时并发:SimultaneousConcurrency一、并发操作引起的问题丢失修改不可重复读读“脏”数据封锁协议7.3并发控制例:银行中,C账户上原有存款500元,现有两位顾客同时给此账户存款,分别运行下面两个事务:T1:READ(C),C=C+100,WRITE(C);T2:READ(C),C=C+200,WRITE(C);运行过程可能如下:(1)先执行事务T1,然后执行事务T2(2)先执行事务T2,然后执行事务T1(3)事务T1和事务T2并发执行读出C,C=500读出C,C=500C=C+100,C=600把C写到数据库C=C+200,C=700把C写到数据库C:600C:700C:500T1的运行T2的运行事务T1事务T2读出C,C=500C=C+100C=600读出C,C=500C=C+200C=700丢失修改事务T1事务T2

读出A=50

读出B=100

求和=150

读出B=100B=B*2WRITE(B)

读出A=50

读出B=200

求和=250(验算不对)不可重复读三种不可重复读读不一致T1读A,T2修改A,T1读A删除幻影T1读取元组集合A,T2删除部分元组,T1读取元组集合A插入幻影T1读取元组集合A,T2插入一些元组,T1读取元组集合A不可重复读事务T1事务T2

读出C=100C=C*2WRITE(C)

读出C=200

ROLLBACKC恢复为100读“脏”数据T1修改A,T2读A,T1撤销修改导致问题的原因丢失修改、不可重复读、读“脏”数据原因:并发操作破坏了事务的隔离性是否可以找到并发操作的合理调度方式,从而避免三类问题?1、事务的表示方法:

Ri(X)表示事务Ti的读X操作;

Wi(X)表示事务Ti的写X操作。例:事务T1(Read(B);A=B+1;write(A))

事务T2(Read(A);B=A+1;write(B))

可以表示成:

T1:R1(B)W1(A)T2:R2(A)W2(B)二、调度的可串行性R1(X)R1(Y)W1(Y)符号→表示先于(<),即R1(X)先于W1(Y)执行,R1(Y)先于W1(Y)执行,而R1(X)和R1(Y)的先后次序无关紧要。2、冲突操作定义:如果两个操作来自不同的事务,它们对同一数据单位进行操作,并且其中至少有一个是写操作,则称这两个操作是相互冲突的或冲突操作。例:事务T0:W0(X)W0(Y)W0(Z)

事务T1:R1(X)R1(Z)W1(X)

则在这两个事务中有冲突操作:R1(X)与W0(X)

W1(X)与W0(X)

R1(Z)与W0(Z)调度:对于冲突操作不能同时执行,哪个先执行,哪个后执行。3、调度:事务执行的次序。设τ={T1,T2,…Tn}是一事务集,τ的一个调度S是一拟序集(∑,<s)其中:1)

∑说明S执行的操作正是T1,T2,…Tn

的操作。

2)<s说明调度S遵守每个事务的操作的内部执行次序

3)每对冲突操作的执行次序由S决定。R1(X)R1(Z)W1(X)S1=W0(X)W0(Y)W0(Z)S1=({W0(X),W0(Y)

,W0(Z),R1(X),R1(Z)

,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(X)<W1(X),R1(Z)<W1(X)})S1=({W0(X),W0(Y)

,W0(Z),R1(X),R1(Z)

,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(X)<R1(Z)

,R1(X)<W1(X),R1(Z)<W1(X)})S1=({W0(X),W0(Y)

,W0(Z),R1(X),R1(Z)

,W1(X)},{W0(X)<R1(X),W0(Z)<R1(Z),R1(Z)<R1(X)

,R1(X)<W1(X),R1(Z)<W1(X)})4、串行调度:如果在一个调度中,各个事务不交叉执行,而顺序地串行执行,这个调度被称为串行调度。定义:如果调度S中的任意两个事务Ti和Tj,如果Ti的所有操作都先于Tj的所有操作,或者相反,则称S为串行调度。注意:在串行调度中每一个事务都是在下一个事务开始执行之前提交。因此,串行调度没有并发性,故每一个串行调度都是一个正确的执行。5、并发调度:如果在一个调度中,各个事务交叉地执行,这个调度称为并发调度。6、可串行化的调度:如果一个事务集的并发调度与某一串行调度是等价的,则称该并发调度是可串行化的。7、串行化定理定理:一个调度S是可串行化的,当且仅当它的串行图是无环的。串行图:设S是若干事务{T1,T2,…,Tn}的一个调度,S的串行图SG(S)是一个有向图,其构成规则如下:1)图中的结点表示事务2)如果Oi和Oj是冲突操作,且Oi先于Oj执行,则在图中有一条边Ti→Tj。R1(X)W1(X)R3(X)W3(Z)R2(X)W2(Y)W1(Y)T2T1T3R1(X)W1(X)R3(X)W3(X)R2(X)W2(Y)W1(Y)T2T1T3例:8、等价的串行调度:如果SG(S)是无环的,则S等价于SG(S)的任一拓扑排序。T2T1T3拓扑排序为:T2,T1,T3T1T2T3拓扑排序为:T1,T3,T2

或为:T1,T2,T3

拓扑排序:从无入弧的节点开始递归去除W0(X)W0(Y)W0(Z)R1(X)R1(Z)W1(X)R3(Z)W3(Y)W3(Z)R4(X)R4(Y)R4(Z)R2(X)W2(Y)T0T1T2T3T4调度S的串行图拓扑排序为:T0,T2,T1,T3,T4或为:T0,T2,T3,T1,T41、封锁:事务T在对数据进行操作之前,先向系统申请对其进行加锁,获得锁后不允许其它事务更新该数据,直到事务T释放该数据上的锁。2、封锁的类型排它锁(又称写锁,简称X锁)若事务T对数据对象A加上X锁,则其它事务不能在A上加任何类型的锁,此时,只允许事务T读取和修改A,直到T释放A上的锁。共享锁(又称读锁,简称S锁)若事务T对数据对象A加上S锁,则其它事务也可在A上加S锁,但不能加X锁,事务T和其它事务只能读取A,但不能修改A。7.4、基于封锁的并发控制技术3、封锁协议封锁级别加锁放锁防止丢失修改保证可重复读不读“脏”数据一级事务T在修改数据A之前必须先对其加X锁事务结束才释放X锁可防止不能保证不能保证二级一级封锁协议+事务T在读取数据A之前必须对其加S锁读完后即可释放S锁可防止不能保证能保证三级一级封锁协议+事务T在读取数据A之前必须对其加S锁事务结束才释放S锁可防止能保证能保证一级封锁协议例XlockARead(A)A=10A=A-5Write(A)CommitUnlockAXlockARead(A)A=5A=A-5Write(A)CommitUnlockA等待等待等待等待获得XlockA事务T1事务T2没有丢失修改READ(C,D)M=C+DREAD(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2不可重复读Write(D)Write(C)XlockCXlockDUnlockCUnlockD二级封锁协议例READ(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2防止读“脏”数据Write(D)Write(C)XlockCXlockDUnlockCUnlockDRollBackSlockCSlockD等待等待等待获得SlockC获得SlockDUnlockCUnlockDREAD(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2不可重复读Write(D)Write(C)XlockCXlockDUnlockCUnlockDSlockCSlockDUnlockCUnlockD等待获得XlockC获得XlockDREAD(C,D)M=C+DSlockCSlockDUnlockCUnlockD等待获得SlockC获得SlockDCommitCommitCommit三级封锁协议例READ(C,D)M=C+DREAD(C,D)C=C+10D=D+10事务T1事务T2可重复读Write(D)Write(C)XlockCXlockDUnlockCUnlockDREAD(C,D)M=C+DSlockCSlockDUnlockCUnlockD等待获得XlockC获得XlockD等待CommitCommit活锁:事务T1,T2申请数据对象A,T1先给A加锁,T1释放A上的锁后,事务T3又给A加锁,T2等待,这样,A始终被其他事务封锁,事务T2可能长时间得不到A,这种情况称为活锁。避免活锁的方法:采用先来先服务的原则。死锁:事务T1已经封锁A,而又想申请封锁B,而此时事务T2已经封锁B,而又想申请封锁A,这样,T1等待T2释放B,而T2等待T1释放A,使得T1、T2均无法继续执行下去,这种情况称为死锁。LOCKA…LOCKB…LOCKB…LOCKA…

1)某一事务在对数据进行读、写

温馨提示

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

评论

0/150

提交评论