欢迎来到天天文库
浏览记录
ID:59016559
大小:314.00 KB
页数:42页
时间:2020-09-26
《第7章并发控制技术ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章并发控制技术7.1并发控制概述7.2并发控制的正确性准则7.3加锁协议7.4死锁的检测、处理和预防7.5多粒度封锁7.1并发控制概述引言数据库是一种共享资源,可以供多个用户使用。允许多个用户同时使用的数据库系统称为多用户数据库系统。当多个用户并发地存取数据库时就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。并发控制机制是衡量一个数据库管理系统性能的重要标志之一。7.1并发控制概述数据库系统中的并发如果数据库中的事务顺序执行,即一个事务完全结束后,另一个事务才开始,则称这种执行方式为
2、串行访问(serialaccess)。如果DBMS可以同时接受多个事务,事务在时间上重叠执行,则称这种执行方式为并发访问(concurrentaccess)。在单CPU系统中,同一时间只能有一个事务占用CPU,即各个事务需要交叉使用CPU,我们称这种执行方式为交叉并发(interleavedconcurrency)。在多CPU系统中,可以允许多个事务同时占用CPU,我们称这种执行方式为同时并发(simultaneousconcurrency)。7.1并发控制概述事务并发执行可能引起的问题下面我们先来看一个例子,说明并发操作可能带来的数据的不一致性问题。考虑飞机订票系统中的一个活动序列:1)
3、.甲售票点(甲事务)读出某航班的机票余额A,设A=16.2).乙售票点(乙事务)读出同一航班的机票余额A,也为16.3).甲售票点卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.4).乙售票点也卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库.问题是,结果明明卖出两张机票,数据库中机票余额却只减少1张。7.1并发控制概述仔细分析并发操作带来的数据不一致性包括三类:丢失修改(lostupdate)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。上面飞机订票例子就属此类。7.1并发控制概述不可重复读(non-repe
4、atableread)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。例如T1读取B=100进行运算,T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致。7.1并发控制概述事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。事务T1按一定条件从数据库中读取某些数据记录后,事务T
5、2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。7.1并发控制概述读“脏”数据(dirtyread)读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。7.1并发控制概述并发控制的目标产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。此外,并发控制还应能提高系统资源利用率并改善短事务
6、的响应时间。例如,现在有两个事务,分别包含下列操作:事务T1:读B;A=B+1;写回A;事务T2:读A;B=A+1;写回B;假设A,B的初值均为2。按T1→T2次序执行结果为A=3,B=4;按T2→T1次序执行结果为A=4,B=3。7.1并发控制概述7.2并发控制的正确性准则基本定义计算机系统对并发事务中并发操作的调度是随机的,而不同的调度可能会产生不同的结果,那么哪个结果是正确的,哪个是不正确的呢?如果一个事务运行过程中没有其他事务同时运行,也就是说它没有受到其他事务的干扰,那么就可以认为该事务的运行结果是正常的或者预想的。因此将所有事务串行起来的调度策略一定是正确的调度策略。虽然以不同
7、的顺序串行执行事务可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都是正确的。定义1:设数据库系统中参与并发执行的事务集为{T1,T2,…,Tn},一个调度(schedule)S就是对n个事务中的所有操作执行次序的一个安排。在一个调度中,不同事务的操作可以交叉执行,但必须保持同一个事务中各个操作的次序。7.2并发控制的正确性准则定义2:设数据库系统中参与并发执行的事务集为{T1,T2,…,Tn},如果其中2个
此文档下载收益归作者所有