数据库第4章并发控制.ppt

上传人:wuy****n92 文档编号:91055267 上传时间:2023-05-21 格式:PPT 页数:35 大小:282.16KB
返回 下载 相关 举报
数据库第4章并发控制.ppt_第1页
第1页 / 共35页
数据库第4章并发控制.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《数据库第4章并发控制.ppt》由会员分享,可在线阅读,更多相关《数据库第4章并发控制.ppt(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第第4 4章章 并发控制并发控制本章要点本章要点n并发操作及影响并发操作及影响n理解事务的概念理解事务的概念n并发操作的可串行性并发操作的可串行性n并发控制及实现技术并发控制及实现技术序言序言n事务并行地运行可充分利用系统资源事务并行地运行可充分利用系统资源n事务是构成单一逻辑工作单元的操作集事务是构成单一逻辑工作单元的操作集合合,是并发控制的基本单位是并发控制的基本单位.n多用户数据库系统中允许多个用户同时多用户数据库系统中允许多个用户同时使用数据库,即在同一时刻可能有多个使用数据库,即在同一时刻可能有多个事务并行运行事务并行运行.举例举例:并发控制并发控制n这种数据库的不一致是由并发操作引

2、起的这种数据库的不一致是由并发操作引起的机票数量机票数量A AA=16A=16读读读读A=A-1A=A-1A=A-1A=A-1A=15A=15A=15A=15售票点售票点售票点售票点A=16A=16A=16A=16出售出售1 1出售出售1 1事务事务T1T1事务事务T2T24.1 4.1 事事 务务事务事务 事务是构成单一逻辑工作单元的操作集事务是构成单一逻辑工作单元的操作集合。它必须以原子的方式执行,即:所有合。它必须以原子的方式执行,即:所有的操作要么都做,要么都不做,是一个不的操作要么都做,要么都不做,是一个不可分割的工作单位。可分割的工作单位。事务的性质事务的性质(ACID)(ACID

3、)u 原子性(原子性(AtomicityAtomicity)u 一致性(一致性(ConsistencyConsistency)u 隔离性(隔离性(IsolationIsolation)u 持久性(持久性(DurabilityDurability)事务的开始与结束事务的开始与结束u1.1.开始事务开始事务用用“BEGIN TRANSACTION”BEGIN TRANSACTION”定义事务的定义事务的开始开始u2.2.结束事务结束事务 结束事务通常以下两种方式:结束事务通常以下两种方式:(1 1)成功:)成功:COMMIT COMMIT (2 2)不成功:)不成功:ROLLBACKROLLBAC

4、K事务的状态事务的状态 事务的执行状态分为事务的执行状态分为5 5种:种:n 活动状态活动状态n 部分提交状态部分提交状态n 失败状态失败状态n 中止状态中止状态n 提交状态提交状态图图4.1 事务的状态转换图事务的状态转换图4.2事务调度与并发控制事务调度与并发控制事务的调度事务的调度事务调度的概念:事务调度的概念:n 调度(调度(ScheduleSchedule):事务的执行次序。):事务的执行次序。n 串行调度(串行调度(Serial ScheduleSerial Schedule):多个事务):多个事务依次串行执行,且只有当一个事务的所有操作都依次串行执行,且只有当一个事务的所有操作都

5、执行完后才执行另一个事务的所有操作。执行完后才执行另一个事务的所有操作。n 并行调度(并行调度(Concurrent ScheduleConcurrent Schedule):利):利用分时的方法处理多个事务。用分时的方法处理多个事务。并发控制并发控制 当多个事务中的多个事务并发执行时,有当多个事务中的多个事务并发执行时,有可能无法保证事务之间的隔离性,并破坏数可能无法保证事务之间的隔离性,并破坏数据库的一致性、正确性。因此,据库的一致性、正确性。因此,DBMS的一的一个重要任务就是要有一种机制去保证事务在个重要任务就是要有一种机制去保证事务在并发的存取和修改数据的时候的完整性不被并发的存取和

6、修改数据的时候的完整性不被破坏。破坏。并发控制机制就是一种在多用户环境下对并发控制机制就是一种在多用户环境下对数据库进行并发操作进行规范的机制,是数据库进行并发操作进行规范的机制,是衡衡量量DBMS性能的重要标志之一性能的重要标志之一。并发控制能给数据库的操作带来很大好处,并发控制能给数据库的操作带来很大好处,最明显的有以下两点:最明显的有以下两点:n(1)改善系统的资源利用率)改善系统的资源利用率n(2)改善短事务的响应时间)改善短事务的响应时间数据的不一致性数据的不一致性 经过大量实例分析,发现并发操经过大量实例分析,发现并发操作的不正确调度可能会带来三种数据作的不正确调度可能会带来三种数

7、据不一致性。不一致性。n 丢失修改丢失修改n 读读“脏脏”数据数据n 不可重复读不可重复读并发操作引起的丢失修改并发操作引起的丢失修改n丢失修改丢失修改事务事务T1T1对数据的修对数据的修改被事务改被事务T2T2的修改的修改覆盖覆盖T1读A=16A=A-1写回A15T2读A=16A=A-1写回A15并发操作引起的读脏数据并发操作引起的读脏数据n读脏数据读脏数据事务事务T1 T1 修改了某数修改了某数据并写回磁盘,事据并写回磁盘,事务务T2 T2 读取了同一数读取了同一数据后,据后,T1T1由于某种由于某种原因被撤销,被修原因被撤销,被修改的值复原,此时改的值复原,此时T2T2读到的数据与数读到

8、的数据与数据库中的数据不一据库中的数据不一致致T1读C=1C=C*2写回C=2ROLLBACKC恢复为1T2读C=2并发操作引起的不可重复读并发操作引起的不可重复读n不可重复读不可重复读事务事务T1T1读取某一数读取某一数据后,事务据后,事务T2T2对其对其做了修改,当做了修改,当T1T1按按同样条件再读时得到同样条件再读时得到不同的值不同的值事务事务T1T1读取某些数读取某些数据后,事务据后,事务T2T2删除删除(或插入或插入)了一些记录,了一些记录,当当T1T1按同样条件再按同样条件再读时发现少读时发现少(或多或多)了了一些记录一些记录T1读A=1,B=2求A+B=3读A=1,B=4求A+

9、B=5T2读B=2B=B*2写回B=4小结小结n产生上述三类不一致性的主要原因产生上述三类不一致性的主要原因并发操作破坏了事务的隔离性,事务间相并发操作破坏了事务的隔离性,事务间相互干扰互干扰n并发控制的主要技术并发控制的主要技术封锁技术封锁技术(Locking)(Locking)可串行化准则可串行化准则 假设事务都是串行运行的,一个事务结束假设事务都是串行运行的,一个事务结束(提交或者退回)后,另一个事务才能开始运(提交或者退回)后,另一个事务才能开始运行,那么就可以认为所有事务的运行结果都是行,那么就可以认为所有事务的运行结果都是正确的。尽管这些事务假如以不同的顺序运行,正确的。尽管这些事

10、务假如以不同的顺序运行,可能会对数据库造成不同的影响。可能会对数据库造成不同的影响。以此为判断标准,我们将可串行化的并发以此为判断标准,我们将可串行化的并发调度当作判断事务并发操作的调度当作判断事务并发操作的唯一正确性准则唯一正确性准则。即:假如并发操作调度的结果与按照某种顺序即:假如并发操作调度的结果与按照某种顺序串行执行这些操作的结果相同,就认为并发操串行执行这些操作的结果相同,就认为并发操作是正确的。作是正确的。例例 并发事务的不同调度策略并发事务的不同调度策略:假设假设A,B初值均为初值均为2,T1:读读B;A=B+1;写回写回A;T2:读读A;B=A+1;写回写回BT1T2T1T2T

11、1T2Y=B=2A=Y+1 X=A=3写回写回B(=4)B=X+1a 串行调度串行调度 c 不可串行化的调度不可串行化的调度Y=B=2A=Y+1写回写回A(=3)X=A=2写回写回B(=3)B=X+1Y=B=2A=Y+1写回写回A(=3)Lock A,B X=A=3写回写回B(=4)B=X+1等待等待等待等待等待等待T1T2Y=B=3A=Y+1写回写回A(=4)X=A=2写回写回B(=3)B=X+1d 可串行化的调度可串行化的调度b 串行调度串行调度写回写回A(=3)结果结果:A=3,B=4结果结果:A=4,B=3结果结果:A=3,B=3结果结果:A=3,B=4Lock A,B.ULock A

12、,BULock A,B4.3 4.3 封锁管理封锁管理封锁机制封锁机制u 1.1.封锁的定义封锁的定义 所谓封锁指的是事务所谓封锁指的是事务T T对某个数据对象对某个数据对象(如关系、记录等)进行操作以前,先请(如关系、记录等)进行操作以前,先请求系统对其加锁,成功加锁之后该事务就求系统对其加锁,成功加锁之后该事务就对该数据对象有了控制权,在事务对该数据对象有了控制权,在事务T T释放它释放它的锁之前,其他的事务不能更新此数据对的锁之前,其他的事务不能更新此数据对象,只有事务象,只有事务T T对其解锁之后,其他的事务对其解锁之后,其他的事务才能更新它。才能更新它。封锁是实现并发控制的一个重要的

13、技术。封锁是实现并发控制的一个重要的技术。u有两种基本的封锁类型:有两种基本的封锁类型:n排它锁排它锁(X X锁锁,写锁写锁):若事务若事务T T对数据对象对数据对象A A加上加上X X锁,则只允许锁,则只允许T T读读取和修改取和修改A A,其它任何事务都不能再对,其它任何事务都不能再对A A加任何加任何类型的锁,直到类型的锁,直到T T释放释放A A上的锁上的锁n共享锁共享锁(S(S锁锁,读锁读锁):若事务若事务T T对数据对象对数据对象A A加上加上S S锁,则事务锁,则事务T T可以可以读读A A但不能修改但不能修改A A,其它事务只能再对,其它事务只能再对A A加加S S锁,锁,而不

14、能加而不能加X X锁,直到锁,直到T T释放释放A A上的上的S S锁锁2.2.封锁的粒度封锁的粒度n封锁的粒度即封锁对象的大小,如封锁的粒度即封锁对象的大小,如逻辑单元:属性、元组、关系、索引、数据逻辑单元:属性、元组、关系、索引、数据库等库等物理单元:页、块等物理单元:页、块等n封锁粒度对并发控制的影响封锁粒度对并发控制的影响封锁粒度越大,并发度越小,系统封锁开销封锁粒度越大,并发度越小,系统封锁开销越小;越小;封锁粒度越小,并发度越高,系统封锁开销封锁粒度越小,并发度越高,系统封锁开销越大;越大;修改属性修改属性修改关系修改关系n 如何选择封锁粒度如何选择封锁粒度:综合考虑系统并发度和并

15、综合考虑系统并发度和并发控制开销发控制开销活锁和死锁活锁和死锁n活锁活锁举例说明:举例说明:事务事务T1T1封锁某数据后,事务封锁某数据后,事务T2T2请求封锁请求封锁未获得并等待,而未获得并等待,而T1T1释放锁后,事务释放锁后,事务T3T3请求封锁并获得,请求封锁并获得,T3T3释放锁后,事务释放锁后,事务T4T4请求封锁并获得请求封锁并获得T2T2可能永远等待可能永远等待解决办法:采用先来先服务的策略解决办法:采用先来先服务的策略n死锁死锁举例说明:举例说明:事务事务T1T1和和T2T2各自封锁了数据各自封锁了数据R1R1和和R2R2后,又后,又各自请求封锁各自请求封锁R2R2和和R1R

16、1,因都无法获得而等,因都无法获得而等待对方释放的现象待对方释放的现象解决的两类方法解决的两类方法预防死锁预防死锁允许发生死锁,采用一定手段定期诊断并解允许发生死锁,采用一定手段定期诊断并解除死锁除死锁u死锁的预防死锁的预防n一次封锁法一次封锁法办法:每个事务一次将所有要使用的数据全办法:每个事务一次将所有要使用的数据全部加锁部加锁n顺序封锁法顺序封锁法办法:预先规定数据对象的封锁顺序,所有办法:预先规定数据对象的封锁顺序,所有事务均按此顺序事务均按此顺序n超时法超时法n办法:等待时间超过规定的时限办法:等待时间超过规定的时限n等待图法等待图法n办法:画等待图,发现回路办法:画等待图,发现回路

17、u死锁的诊断死锁的诊断两段锁协议两段锁协议n概念:事务对数据项的加锁和解锁分为概念:事务对数据项的加锁和解锁分为两个阶段完成两个阶段完成获得封锁:在对数据读写之前首先申请并获得封获得封锁:在对数据读写之前首先申请并获得封锁;锁;释放封锁:在释放一个封锁后不再申请和获得任释放封锁:在释放一个封锁后不再申请和获得任何其他封锁何其他封锁n如遵守两段锁协议的事务如遵守两段锁协议的事务n如不遵守两段锁协议的事务如不遵守两段锁协议的事务 Slock A Slock B Xlock C.Unlock B Unlock A Unlock C Slock AUnlock B Slock B Xlock C.Un

18、lock C Slock D三个级别的封锁协议三个级别的封锁协议n1 1级封锁协议级封锁协议内容:写数据前加内容:写数据前加X X锁直至事务结束锁直至事务结束事务结束包括正常结束(事务结束包括正常结束(COMMITCOMMIT)和非正常)和非正常结束(结束(ROLLBACKROLLBACK)评价:是否可解决评价:是否可解决丢失修改?丢失修改?读脏数据?读脏数据?可重复读?可重复读?可防止可防止 不能保证不能保证 不能防止不能防止T1T2T1T2T1T2Xlock A获得获得Xlock A读读A=16A=A-1写回写回A=15CommitUnlock AXlock A等待等待等待等待 获得获得X

19、lock A读读A=15CommitUnlock A等待等待等待等待A=A-1写回写回A=14Slock ASlock B读读A=50求和求和=150读读A=50CommitUnlock AXlock B等待等待等待等待 获得获得Xlock B读读B=100CommitUnlock B等待等待等待等待B=B*2写回写回B=200读读B=100读读B=100求和求和=150Unlock B等待等待等待等待等待等待等待等待Xlock C读读C=100C=C*2写回写回C=200Rollback(C恢复为恢复为100)Unlock CSlock C等待等待等待等待 获得获得Slock C读读C=10

20、0Commit Unlock C等待等待1级级:没有丢失修改没有丢失修改3级级:可重复读可重复读2级级:不读脏数据不读脏数据用用封封锁锁机机制制解解决决三三种种数数据据不不一一致致性性的的示示例例n2 2级封锁协议级封锁协议内容:内容:读数据前加读数据前加S S锁,读完即释放锁,读完即释放写数据前加写数据前加X X锁直至事务结束锁直至事务结束评价:是否可解决评价:是否可解决丢失修改?丢失修改?读脏数据?读脏数据?可重复读?可重复读?可防止可防止 不能保证不能保证 可防止可防止n3 3级封锁协议级封锁协议内容:内容:读数据前加读数据前加S S锁直至事务结束锁直至事务结束写数据前加写数据前加X X

21、 锁直至事务结束锁直至事务结束评价:是否可解决评价:是否可解决丢失修改?丢失修改?读脏数据?读脏数据?可重复读?可重复读?可防止可防止 能保证能保证 可保证可保证小结小结用封锁协议解决问题用封锁协议解决问题n用什么封锁协议解决以下问题?用什么封锁协议解决以下问题?丢失修改?丢失修改?读脏数据?读脏数据?不能重复读?不能重复读?1级封锁级封锁2级封锁级封锁3级封锁级封锁4.4 4.4 查询优化的一般策略查询优化的一般策略 对于一个较复杂的查询要求,通常对于一个较复杂的查询要求,通常都可以用几种不同的表达式来表达,它都可以用几种不同的表达式来表达,它们的结果应该是相同的,但执行的过程们的结果应该是

22、相同的,但执行的过程可能有很大差别。可能有很大差别。例例 假设假设Student表表200条学生记录,条学生记录,SC表有表有300条选课记录,查询学生李明选修的所有条选课记录,查询学生李明选修的所有课程成绩,可以用多个关系代数表达式实现。课程成绩,可以用多个关系代数表达式实现。试比较它们的区别。试比较它们的区别。E E1 1=ScoreScore (Student.Sno=SC.Sno and Student.Sname=Student.Sno=SC.Sno and Student.Sname=李明李明(Student SC)(Student SC)E E2 2=ScoreScore (St

23、udent.Sname=Student.Sname=李明李明(Student SC)(Student SC)E E3 3=ScoreScore (Student.Sname=Student.Sname=李明李明Student)SC)Student)SC)先做先做Student和和 SC笛卡尔积笛卡尔积,生成的临时表有生成的临时表有200 300=60000条记录条记录,在其中查询符合条件在其中查询符合条件(Student.Sno=SC.Sno and Student.Sname=李明李明)的记录的记录,最后投影到属性最后投影到属性Score上上.先做先做StudentStudent和和 SCS

24、C的自然连接的自然连接,生成的临时表有不超过生成的临时表有不超过300300条记录条记录,在其中查询符合条件在其中查询符合条件Student.SnameStudent.Sname=李明李明的记录的记录,最后投影到属性最后投影到属性ScoreScore上上.w先查询先查询StudentStudent表中表中符合条件符合条件Student.SnameStudent.Sname=李明李明的的记录记录,只有只有1 1条条,再和再和SCSC表进行自然连接表进行自然连接,李明李明选了多少门选了多少门课课,生成的临时表就有生成的临时表就有多少多少条记录条记录,最后投影到属性最后投影到属性ScoreScore

25、上上.n 选择运算尽早进行。选择运算尽早进行。n 投影运算与选择运算同时进行。投影运算与选择运算同时进行。n 将笛卡儿积与随后的选择运算合并为连将笛卡儿积与随后的选择运算合并为连接运算。接运算。n 投影运算与其他运算同时进行。投影运算与其他运算同时进行。n 寻找公共子表达式并将结果加以存储。寻找公共子表达式并将结果加以存储。n 对文件进行预处理。对文件进行预处理。我们希望在系统开销尽量小的情况下对我们希望在系统开销尽量小的情况下对查询进行尽可能的优化,一般采用以下策略:查询进行尽可能的优化,一般采用以下策略:4.5 4.5 关系代数的等价变换关系代数的等价变换变换规则:变换规则:1.连接或笛卡

26、儿积的交换律连接或笛卡儿积的交换律 E1 E2 E2 E1 E1 E2 E2 E1 2.连接或笛卡儿积的结合律连接或笛卡儿积的结合律(E1 E2)E3 E1(E2 E3)(E1 E2)E3 E1 (E2 E3).以下略以下略,参见教材参见教材P73应用举例应用举例 B D20010101 S.LN=L.LN and B.BN=L.BN S L 图书管理系统关系模式如下图书管理系统关系模式如下:Book(BN,Title,Author,Publisher)Student(LN,Name,Class)Loan(LN,BN,Date)要求:查询要求:查询2001年元旦前借年元旦前借出的图书书名和借书

27、的学生出的图书书名和借书的学生姓名。姓名。语法树语法树 Title,Name Title,Name(D20010101(S.LN=L.LN and B.BN=L.BN(B S L)B D20010101 B.BN=L.BN S 优化前优化前 Title,Name(B.BN=L.BN(Title,BN(B)(Name,L.BN(S.LN=L.LN(Name,LN(S)(BN,LN(D20010101(L)Title,Name Title,BNL Name,LN BN,LN S.LN=L.LN Name,L.BN B D20010101 S.LN=L.LN and B.BN=L.BN S L Title,Name优化后优化后

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

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com