事务与并发控制_第1页
事务与并发控制_第2页
事务与并发控制_第3页
事务与并发控制_第4页
事务与并发控制_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

第六章

事务与并发控制一、事务的概念事务概念用户定义的一个操作序列,这些操作要么都执行,要么都不执行,是一个不可分割的工作单位2024/1/22福州大学阳光学院计算机工程系2一、事务的概念事务与程序区别一个事务可以是一条SQL语句,一组SQL语句或整个程序一个应用程序通常包含多个事务事务是恢复和并发控制的根本单位2024/1/22福州大学阳光学院计算机工程系3一、事务的概念2024/1/22福州大学阳光学院计算机工程系4显式事务隐式事务事务分类一、事务的概念定义事务的语句2024/1/22福州大学阳光学院计算机工程系5BeginTransaction开始语句Commit—正常提交Rollback—回滚结束语句SQL语句……一、事务的概念COMMIT事务正常结束提交事务的所有操作〔读+更新〕事务中所有对数据库的更新永久生效2024/1/22福州大学阳光学院计算机工程系6一、事务的概念ROLLBACK事务异常终止事务运行的过程中发生了故障,不能继续执行,回滚事务的所有更新操作事务滚回到开始时的状态2024/1/22福州大学阳光学院计算机工程系7一、事务的概念2024/1/22福州大学阳光学院计算机工程系8原子性一致性事务的特性(ACID)隔离性永久性一、事务的概念2024/1/22福州大学阳光学院计算机工程系9特性含义实现原子性事务必须遵守“要么都做要么都不做”的原则DBMS的事务管理子系统一致性事务执行必须使DB保持一致性的状态DBMS的测试完整性子系统隔离性多个事务执行互不干扰DBMS的并发控制子系统持久性事务对数据库的改变是永久的DBMS的恢复管理子系统一、事务的概念银行转帐:从帐号A中取出一万元,存入帐号B定义一个事务,该事务包括两个操作这两个操作要么全做,要么全不做2024/1/22福州大学阳光学院计算机工程系10

B=B+1

A=A-1BA一、事务的概念2024/1/22福州大学阳光学院计算机工程系11

读A=16

A←A-3写回A=13①读A=16②③A←A-1

写回A=15

④T2T1T1的修改被T2覆盖了!(称为"修改丧失")二、

并发控制概述事务的串行执行多个事务操作同一数据对象按逐个顺序执行事务的并发执行多个事务对同一数据对象同时进行操作方式:交叉并发(单处理机);同步并发(多处理机)2024/1/22福州大学阳光学院计算机工程系12二、并发控制概述并发执行可能发生的4类数据的不一致性丧失修改不可重复读读脏数据产生幻影(幽灵)数据2024/1/22福州大学阳光学院计算机工程系13二、并发控制概述2024/1/22福州大学阳光学院计算机工程系14T1T2ReadA=16ReadA=16A=A-1A=A-1WriteAWriteAt1t2t3t4t5t6两个事务T1,T2读取并修改同一数据对象,由于T2的提交使得T1的提交覆盖丧失丧失修改二、并发控制概述2024/1/22福州大学阳光学院计算机工程系15T1T2ReadA=16ReadA=16A=A-1ReadA=15WriteAt1t2t3t4t5t6T1不同时间读取同一数据对象结果不一样不可重复读Commit二、并发控制概述三类不可重复读事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。事务2删除了其中局部记录,当事务1再次读取数据时,发现某些记录神密地消失了2024/1/22福州大学阳光学院计算机工程系16二、并发控制概述三类不可重复读事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象2024/1/22福州大学阳光学院计算机工程系17二、并发控制概述2024/1/22福州大学阳光学院计算机工程系18T1T2ReadA=16ReadA=15A=A-1RollbackWriteAt1t2t3t4t5t6T2读取并修改T1修改正的但是并未提交的数据,而使T2读取无用数据读“脏〞数据A=A-1WriteAt7二、并发控制概述产生4类数据不一致性的主要原因并发操作破坏了事务的隔离性并发控制的主要技术封锁时间戳乐观控制法2024/1/22福州大学阳光学院计算机工程系19三、封锁封锁事务T要操作某个数据对象R时必须先向系统申请加锁,使得T对该数据拥有某种操作权而排除其他事务对该数据的某种操作权。记为LockR解锁封锁后可以释放数据对象,记为UnLockR2024/1/22福州大学阳光学院计算机工程系20三、封锁X锁与S锁X锁〔排他锁/写锁〕事务T对数据对象R加锁后,T对R可以进行读写操作,但其他事务对R不能进行任何操作,而只能等到T对R解锁后才可进行操作。记为XLockR2024/1/22福州大学阳光学院计算机工程系21三、封锁2024/1/22福州大学阳光学院计算机工程系22T1T2ReadA=16等待.UnLockA获得XLockAt1t2t3t4t5t6X锁A=A-1WriteAt7XLockAXLockA〔不批准〕Committ8...三、封锁X锁与S锁S锁〔共享锁/读锁〕事务T对操作对象R加锁后,T只能对R进行读操作,也允许其他事务对R进行加同样锁并可进行读操作。记为SLockR2024/1/22福州大学阳光学院计算机工程系23三、封锁2024/1/22福州大学阳光学院计算机工程系24T1T2ReadAReadAt1t2t3S锁SLockASLock

A三、封锁2024/1/22福州大学阳光学院计算机工程系25X锁与S锁的兼容性XS--XNNYSNYY--YYYT2T1三、封锁2024/1/22福州大学阳光学院计算机工程系26T1T2ReadA=16..UnLockA获得XLockAt1t2t3t4t5t6A=A-1WriteAt7XLockAXLockA〔等待〕Committ8..ReadA=15A=A-1t9t10t11WriteACommit解决不一致性问题—丧失修改三、封锁2024/1/22福州大学阳光学院计算机工程系27T1T2ReadA=16UnLockA获得XLockAt1t2t3t4t5t6ReadA=16t7SLockAXLockA〔等待〕Committ8ReadA=16A=A-1t9t10t11WriteACommit解决不一致性问题—不可重复读三、封锁2024/1/22福州大学阳光学院计算机工程系28T1T2ReadA=16UnLockA获得XLockAt1t2t3t4t5t6WriteAt7XLockAXLockA〔等待〕Rollbackt8ReadA=16A=A-1t9t10t11WriteACommitA=A-1解决不一致性问题—读脏数据三、封锁封锁协议概念所有事务都要遵守的加锁规那么在运用X锁和S锁对数据对象加锁时,需要约定一些规那么何时申请X锁或S锁持锁时间、何时释放2024/1/22福州大学阳光学院计算机工程系29三、封锁一级封锁协议事务T在修改数据对象R之前必须对R加X锁,直到事务结束〔Commit或Rollback〕才可解锁。当T对R加X锁后到解锁之前,其他事务对R可以申请X锁,但是只能等待2024/1/22福州大学阳光学院计算机工程系30三、封锁一级封锁协议一级封锁协议可防止丧失修改在一级封锁协议中,如果是读数据,不需要加锁的,所以它不能保证可重复读和不读“脏〞数据。2024/1/22福州大学阳光学院计算机工程系31三、封锁2024/1/22福州大学阳光学院计算机工程系32

读A=15①

XlockA

获得②

读A=16

A←A-1

写回A=15③

④RollbackUnlockAT2T1读“脏〞数据三、封锁2024/1/22福州大学阳光学院计算机工程系33不可重复读

XlockB

读B=100B←B*2B=200CommitUnlockB①读A=50,B=100

求和=150②③读A=50,B=200

求和=250(验算不对)T2T1三、封锁二级封锁协议在一级封锁协议的根底上,事务T在读取数据之前必须加S锁,读取后即可解S锁二级封锁协议可以防止丧失修改和读“脏〞数据在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读2024/1/22福州大学阳光学院计算机工程系342024/1/22福州大学阳光学院计算机工程系35④SclockA

获得读A=50UnlockASclockB

获得读B=200UnlockB

求和=250(验算不对)

T2T1(续)①

SclockA

获得读A=50UnlockA②SclockB

获得读B=100UnlockB③求和=150

XlockB等待等待获得XlockB读B=100B←B*2写回B=200CommitUnlockBT2T1三、封锁三级封锁协议在一级封锁协议的根底上,事务T在读取数据对象R之前必须加S锁,直到事务结束才可解锁三级封锁协议可防止丧失修改、读脏数据和不可重复读2024/1/22福州大学阳光学院计算机工程系36三、封锁三级协议的主要区别什么操作需要申请封锁何时释放锁〔即持锁时间〕2024/1/22福州大学阳光学院计算机工程系37三、封锁2024/1/22福州大学阳光学院计算机工程系38四、活锁和死锁活锁多个事务对同一数据对象加锁结果使某个事务永远处于等待状态〔非公平分配,饿死〕2024/1/22福州大学阳光学院计算机工程系39T1T2UnlockAXLockAXLockA(等待)T3XLockA(等待)XLockA四、活锁和死锁活锁活锁预防—先来先效劳按请求封锁的先后次序对这些事务排队该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁。2024/1/22福州大学阳光学院计算机工程系40四、活锁和死锁死锁多个事务相互等待对方释放自己所需要的资源而又无法获得,使得事务无法执行下去的现象2024/1/22福州大学阳光学院计算机工程系41T1T2XLockAXLockBXLockB(等待)XLockA(等待)四、活锁和死锁死锁死锁的预防:一次封锁法顺序封锁法2024/1/22福州大学阳光学院计算机工程系42四、活锁和死锁一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否那么就不能继续执行一次封锁法存在的问题:降低并发度将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度2024/1/22福州大学阳光学院计算机工程系43四、活锁和死锁顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁2024/1/22福州大学阳光学院计算机工程系44四、活锁和死锁死锁的诊断与解除诊断超时法等待图法2024/1/22福州大学阳光学院计算机工程系45四、活锁和死锁超时法如果一个事务的等待时间超过了规定的时限,就认为发生了死锁优点:实现简单2024/1/22福州大学阳光学院计算机工程系46四、活锁和死锁等待图法用事务等待图动态反映所有事务的等待情况事务等待图是一个有向图G=(T,U)T为结点的集合,每个结点表示正运行的事务U为边的集合,每条边表示事务等待的情况假设T1等待T2,那么它们之间划一条T1指向T2有向边2024/1/22福州大学阳光学院计算机工程系47四、活锁和死锁等待图法并发控制子系统周期性地〔比方每隔1min〕检测事务等待图,如果发现图中存在回路,那么表示系统中出现了死锁。2024/1/22福州大学阳光学院计算机工程系48四、活锁和死锁死锁的诊断与解除解除撤销处理代价最小的事务,释放该事务持有的锁,使其他事务得以继续运行2024/1/22福州大学阳光学院计算机工程系49五、并发调度的可串行性调度:一个事务集所有根本操作的一个序列例:现在有两个事务,分别包含以下操作:事务2:读B;A=B+1;写回A;事务1:读A;B=A+1;写回B;2024/1/22福州大学阳光学院计算机工程系50五、并发调度的可串行性调度:一个事务集所有根本操作的一个序列2024/1/22福州大学阳光学院计算机工程系51T1T2B=A+1WriteBReadAA=B+1WriteAReadBT1T2B=A+1WriteBReadAA=B+1WriteAReadB例:初始状态:A=2,B=2五、并发调度的可串行性串行调度与并发调度串行调度:事务逐个执行并发调度:事务交叉执行可串行化的调度假设并发调度的结果与某次串行调度的结果一样,那么称这种调度策略为可串行化的调度2024/1/22福州大学阳光学院计算机工程系52可串行性是并发事务正确性的准那么五、并发调度的可串行性2024/1/22福州大学阳光学院计算机工程系53T1T2SlockBY=B=2UnlockBXlockAA=Y+1writeA=3UnlockA

X=A=3UnlockAwriteB=4UnlockBSlockAXlockBB=X+1a串行调度T1T2SlockBY=B=3UnlockBXlockAA=Y+1writeA=4UnlockA

X=A=2UnlockAWriteB=3UnlockBSlockAXlockBB=X+1b串行调度T1:读B;A=B+1;写回A;T2:读A;B=A+1;写回B;A,B初值均为2五、并发调度的可串行性2024/1/22福州大学阳光学院计算机工程系54T1T2SlockBY=B=2A=Y+1writeA=3UnlockA

X=A=2writeB=3UnlockBSlockAXlockBB=X+1c不可串行化的调度(结果与a,b不同,错误调度)T1T2SlockBY=B=2UnlockBXlockAA=Y+1writeA=3UnlockA

X=A=3UnlockAWriteB=4UnlockBSlockAXlockBB=X+1T1:读B;A=B+1;写回A;T2:读A;B=A+1;写回B;A,B初值均为2XlockAUnlockAUnlockB等待等待等待d可串行化的调度(结果与a相同,正确调度)五、并发调度的可串行性从理论上来讲,在某一事务执行时禁止其他事务执行的调度策略一定是可串行化的调度两段锁〔2PL〕协议就是保证并发调度可串行性的封锁协议。2024/1/22福州大学阳光学院计算机工程系55五、并发调度的可串行性两段锁〔2PL〕协议每个事务在读写数据对象之前必须封锁并获得锁〔扩展阶段〕每个事务在释放一个锁后就不能再加锁〔收缩阶段〕2024/1/22福州大学阳光学院计算机工程系56五、并发调度的可串行性遵守两段锁协议的事务SlockA…SlockB…XlockC...UnlockB…UnlockA…UnlockC不遵守两段锁协议的事务SlockA…UnlockA…SlockB...XlockC…UnlockC…UnlockB2024/1/22福州大学阳光学院计算机工程系57五、并发调度的可串行性如果所有事务都遵守2PL,那么并发调度可串行化说明:只有加锁而无解锁,也满足2PL;2PL也增加了死锁的可能性。2024/1/22福州大学阳光学院计算机工程系582024/1/22福州大学阳光学院计算机工程系59T1SlockB读B=2Y=BXlockA

A=Y+1写回A=3UnlockBUnlockA

T2

SlockA

等待等待等待等待等待SlockA读A=3Y=AXlockBB=Y+1写回B=4UnlockBUnlockA

T1SlockB读B=2Y=BUnlockBXlockA

A=Y+1写回A=3UnlockA

T2

SlockA等待等待等待等待SlockA读A=3X=AUnlockAXlockBB=X+1写回B=4UnlockB

(a)遵守两段锁协议(b)不遵守两段锁协议T1SlockB读B=2Y=BUnlockBXlockAA=Y+1写回A=3UnlockAT2

SlockA读A=2X=AUnlockAXlockB等待XlockBB=X+1写回B=3UnlockB

(c)不遵守两段锁协议(b)可串行化(c)不可串行化六、时间戳法时间戳是由DBMS创立的唯一标识符,用于标识事务的相对启动时间一般被赋予时间戳值的顺序就是事务提交给系统的顺序。时间戳性质:唯一性

温馨提示

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

评论

0/150

提交评论