资源描述
Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,第,10,讲 事务处理技术,本讲内容,事务的基本概念,数据库恢复技术,并发控制技术,有所了解即可,什么是事务,事务是用户定义的一个数据库操作序列,该序列内的操作是不可分割的,在,RDBMS,中,一个事务可由一条、多条,SQL,语句组成,在,RDBMS,中,用于事务的标准,SQL,语句有,BEGIN TRANSACTION,开始事务,COMMIT,提交事务所有操作,事务正常结束,ROLLBACK,事务执行中遇故障,回滚到事务开始时的状态,事务结束,事务的特性,原子性(,Atomicity,),同一事务内的操作不可分割,一致性(,Consistency,),事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态,隔离性(,Isolation,),一个事务的执行不能被其他事务干扰,事务的特性,持续性(,Durability,),某一事务一旦提交,其对数据库中数据的改变就是永久性的,发生于该事务提交后的其他操作或故障,均不影响该事务的执行结果,事务的四个特征,Atomicity,、,Consistency,、,Isolation,、,Durability,ACID,特性,事务的处理技术,事务处理技术用于保证事务的,ACID,特性,保证被强行终止的事务对数据库和其他事务没有任何影响,数据库恢复技术,保证多个事务的交叉运行不影响这些事务的原子性,并发控制,本讲内容,事务的基本概念,数据库恢复技术,并发控制技术,数据库恢复技术,故障种类,恢复的实现技术,恢复的策略,事务内部故障,事务内部故障有两大类,可通过事务程序发现的,,ROLLBACK,非预期的,不能由应用程序处理,若未特别指明,事务故障特指这一类故障,事务故障意味着事务没有到达预期的终点,数据库可能处于不正确的状态,系统故障,所有造成系统停止运转的事件都可称为系统故障,发生系统故障,可能造成数据库缓冲区中内容丢失,使得运行的事务非正常终止,已完成的事务部分或全部留在缓冲区,尚没有写到物理数据库中,介质故障,系统故障又称为软故障,介质故障被称为硬故障,比如,磁盘损坏、瞬时强磁场干扰等,破坏部分或整个数据库,影响正在存取相应数据的事务,发生机率小于前两种故障,但破坏性大,数据库恢复技术,故障种类,恢复的实现技术,恢复的策略,数据库恢复机制的关键,建立冗余数据,利用冗余数据恢复数据库,建立冗余数据的常用技术,数据转储,登记日志文件,数据转储,DBA,定期地将整个数据库复制到磁盘或另一个磁盘上保存的过程称为转储,备用数据称为后备副本,转储,运行事务,重装后备副本,重新运行事务,数据转储的分类,静态转储,在系统中无运行事务时进行的转储,只要转储开始时数据库处于一致性状态,则得到的后备副本一定是一致的,由于对事务运行的限制,可能降低数据库可用性,动态转储,在转储期间允许对数据库进行存取或修改,得到的后备副本不一定是一致的,数据转储的分类,海量转储,每次转储全部数据库,用得到的后备副本进行数据库恢复比较方便,但如果数据库大且事务处理频繁,则不实用,增量转储,每次只转储上一次转储后被更新过的数据,转储和使用后备副本进行恢复时比海量转储麻烦,日志文件概念及格式,日志文件是用于记录事务对数据库的更新操作的文件,不同,RDBMS,采用的日志文件格式不完全一样,日志文件的格式,以记录为单位的日志文件,事务标识、操作类型、操作对象、更新前数据的值、更新后数据的值,以数据库块为单位的日志文件,事务标识、更新前的数据块、更新后的数据块,日志文件的作用,事务故障和系统故障的恢复必须使用登记日志,动态转储方式中,必须使用登记日志,静态转储中,也可能用到登记日志,转储,运行事务,重装后备副本,重新运行事务,登记日志文件的准则,日志的登记次序严格按并发事务执行的时间次序,必须先写日志文件,后写数据库,将数据的修改写到数据库中是一个操作,将表示该数据修改的日志写到日志文件中又是一个操作,两操作执行时可能发生发生故障,数据库恢复技术,故障种类,恢复的实现技术,恢复的策略,事务故障的恢复,事务故障的恢复由系统自动完成,对用户透明,某事务发生故障后,系统恢复步骤,1.,反向扫描日志文件,查找该事务的更新操作,2.,对该事务的更新操作执行逆操作,3.,继续反向扫描日志,查找该事务的其他更新操作,返,2,4.,直到反向扫描到事务的开始标记,系统故障的恢复,系统故障恢复由系统自动完成,不需用户干预,系统故障的恢复步骤,1.,正向扫描日志文件,找出在故障发生前已提交的事务,将其事务标识记入重做队列;找出故障发生时尚未完成的事务,将其事务标识记入撤消队列,2.,对撤消队列中的各个事务进行撤消处理,3.,对重做队列中的各个事务进行重做处理,介质故障的恢复,最严重的故障,磁盘上的物理数据和日志文件被破坏,介质故障的恢复步骤,1.,装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态,2.,装入相应的日志文件副本,重做已完成的事务,本讲内容,事务的基本概念,数据库恢复技术,并发控制技术,并发操作及其引发的问题,并发控制的实现,封锁,两段锁协议,并发操作的必要性,事务一个一个串行执行,可避免同时运行多个事务所引发的冲突,但无法充分利用系统资源,不同的事务,在执行过程中需不同的资源,串行执行所有事务,导致某些系统资源处于空闲,T1,T2,T3,并发的分类,交叉并发(,Interleaved Concurrency,),单,CPU,处理系统中采用的并发方式,事务轮流交叉运行,不是真正意义上的并发,同时并发(,Simultaneous Concurrency,),多,CPU,处理系统中采用的并发方式,每个,CPU,运行一个事务,是真正意义上的并发,并发操作引发的问题,丢失修改,两事务同时读入同一数据并修改,某一事务提交的结果破坏了另一事务提交的结果,T1,T2,R(A)=16,R(A)=16,A=A-1W(A)=15,A=A-1W(A)=15,并发操作引发的问题,不可重复读,两事务并发操作,某一事务,T1,读取数据后,另一事务,T2,执行了更新操作,使,T1,无法再现前一次读取的结果,T1,T2,R(A)=50,、,R,(,B,),=100,求和,=150,R(B)=100,、,B=B*2,W,(,B,),=200,R(A)=50,、,R(B)=200,求和,=250,(两次结果不一),并发操作引发的问题,读“脏”数据,两事务并发操作,某一事务,T1,修改某一数据,并将其写入数据;另一事务,T2,读取该数据后,,T1,回滚,事务,T2,读到的数据是不正确的数据,T1,T2,R(C)=100,、,C=C*2=200,W(C)=200,R(C)=200,ROLLBACKC,恢复为,100,并发控制的必要性,当多个事务对数据库进行并发操作,可能造成丢失修改、不可重复读、读“脏”数据等问题,破坏事务的,ACID,特性,为保证事务的隔离性、一致性,需对并发操作进行控制,并发控制机制也是衡量一个,RDBMS,性能的重要指标之一,并发操作及其引发的问题,并发控制的实现,封锁,两段锁协议,封锁,事务,T,对某个数据对象进行操作前,向系统发出加锁请求,系统加锁,事务,T,拥有对该数据对象的控制,控制程度由所加锁类型确定,事务,T,释放所加的琐之前,其他事务不可更新该数据对象,事务,T,执行完后,释放所加的琐,常用锁类型,排它锁(写锁),Xlock,事务,T,对数据对象,A,加,Xlock,,则只有,T,才可读取、修改,A,其他事务不可对,A,加任何类型的锁,直到,T,释放,A,上的锁,共享锁(读锁),Slock,事务,T,对数据对象,A,加,Slock,,则,T,可读,A,但不能修改,A,其他事务可对,A,加,Slock,,直到,T,释放,A,上的锁,封锁解决丢失修改,T1,T2,Xlock(A),R(A)=16,请求,wait,A=A-1W(A)=15Commit,Ulock(A),waitwaitwait,Xlock(A),R(A)=15,A=A-1W(A)=14Commit,Unlock(A),封锁存在的问题,死锁,相互等待,事务无法结束,T1,封锁,R1,T2,封锁,R2,请求封锁,R2,等待,T2,请求封锁,R1,等待,T1,死锁的预防,一次封锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,缺点:扩大封锁范围,降低系统并发性 无法准确预期哪些数据被加锁,顺序封锁法,预先对数据对象规定一个封锁顺序,所有事务按该顺序实行封锁,缺点:维护成本高、很难准确预测封锁对象,死锁的诊断,超时法,当一事务等待时间超过预定值,则诊断为发生了死锁,难点:超时时间的设定,等待图法,以有向图的方式描述所有事务的等待情况,图中出现回路则发生了死锁,T1,T4,T3,T2,并发操作及其引发的问题,并发控制的实现,封锁,两段锁协议,封锁协议,封锁时,对数据对象加锁约定的规则,何时申请封锁,持锁时间,何时释放封锁,约定的规则不同,就形成各种不同的封锁协议,最常用的是两段封锁协议,两段封锁协议,所有事务必须分两个阶段对数据项加锁和解锁,扩展阶段:在对任何数据进行读、写操作前,首先要申请并获得对该数据的封锁,但不能释放任何锁,收缩阶段:在释放一个封锁后,事务不再申请和获得任何其他封锁,可以释放任何锁,
展开阅读全文