第十一章 并发控制要点课件.ppt
《第十一章 并发控制要点课件.ppt》由会员分享,可在线阅读,更多相关《第十一章 并发控制要点课件.ppt(101页珍藏版)》请在三一办公上搜索。
1、An Introduction to Database System,中国人民大学信息学院,数据库系统概论An Introduction to Database System第十一章 并发控制,An Introduction to Database System,多用户数据库系统,允许多个用户同时使用的数据库系统飞机定票数据库系统银行数据库系统 特点:在同一时刻并发运行的事务数可达数百个主要特点表现为多个事务的并发执行,An Introduction to Database System,并发执行,交叉并发方式(Interleaved Concurrency)在单处理机系统中,事务的并行执行是
2、这些并行事务的操作轮流交叉运行单处理机系统中的并行事务并没有真正地并行运行,但能够减少处理机的空闲时间,提高系统的效率,An Introduction to Database System,并发执行,事务的交叉并发执行方式,An Introduction to Database System,并发执行,并发执行通常比起串行执行有更高的效率。每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行,效率低;不能充分利用系统资源,发挥数据库共享资源的特点;,T1,T2,T3,事务的串行执行方式,An Introduction to Database System,并发执行带来的问题,事务
3、并发执行带来的问题会产生多个事务同时存取同一数据的情况 可能会存取和存储不正确的数据,破坏事务一致性和数据库的一致性DBMS必须提供并发控制机制并发控制机制是衡量一个DBMS性能的重要标志之一,An Introduction to Database System,T1的修改被T2覆盖了!,引导学生进行观察,并发操作带来数据的不一致性实例例1飞机订票系统中的一个活动序列 甲售票点(甲事务)读出某航班的机票余额A,设A=16; 乙售票点(乙事务)读出同一航班的机票余额A,也为16; 甲售票点卖出一张机票,修改余额AA-1,所以A为15,把A写回数据库; 乙售票点也卖出一张机票,修改余额AA-1,所
4、以A为15,把A写回数据库 结果明明卖出两张机票,数据库中机票余额只减少1,An Introduction to Database System,问题观察,这种情况称为数据库的不一致性,是由并发操作引起的。在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。若按上面的调度序列执行,甲事务的修改就被丢失。原因:第4步中乙事务修改A并写回后覆盖了甲事务的修改,An Introduction to Database System,问题观察:多种形式的不一致性,并发操作带来的数据不一致性丢失修改(Lost Update)不可重复读(Non-repeatable Read)读“脏”数据(Dirt
5、y Read)记号R(x):读数据xW(x):写数据x,An Introduction to Database System,1 丢失修改,两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。,An Introduction to Database System,丢失修改(续),丢失修改,An Introduction to Database System,2. 不可重复读,不可重复读是指事务T1读取数据后,事务T2 执行更新操作,使T1无法再现前一次读取结果。,An Introduction to Database System,不可重复读(续),
6、不可重复读包括三种情况:(1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值,An Introduction to Database System,不可重复读(续),T1读取B=100进行运算T2读取同一数据B,对其进行修改后将B=200写回数据库。T1为了对读取值校对重读B,B已为200,与第一次读取值不一致,不可重复读,例如:,An Introduction to Database System,不可重复读(续),(2)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘
7、地消失了 (3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象(Phantom Row),An Introduction to Database System,3. 读“脏”数据,读“脏”数据是指:事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1由于某种原因被撤销这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据,An Introduction to Database System,读“脏”数据(续),例
8、如,读“脏”数据,T1将C值修改为200,T2读到C为200T1由于某种原因撤销,其修改作废,C恢复原值100这时T2读到的C为200,与数据库内容不一致,就是“脏”数据,An Introduction to Database System,总结一下,并发操作会破坏数据不一致性并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性 对数据库的应用有时允许某些不一致性,例如有些统计工作涉及数据量很大,读到一些“脏”数据对统计精度没什么影响,可以降低对一致性的要求以减少系统开销,An Introduction to Database System
9、,引导学生分析问题、定义问题,DBMS对并发事务不同的调度可能会产生不同的结果。那么什么是正确性的标准呢?直观上:串行调度是正确的!执行结果等价于串行调度的调度也是正确的,称为可串行化调度,An Introduction to Database System,可串行化调度,可串行化(Serializable)调度多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同可串行性(Serializability)是并发事务正确调度的准则一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度,An Introduction to Database System,可串
10、行化调度(续),例现在有两个事务,分别包含下列操作:事务T1:读B;A=B+1;写回A事务T2:读A;B=A+1;写回B现给出对这两个事务不同的调度策略,An Introduction to Database System,串行化调度,正确的调度,串行调度(a),假设A、B的初值均为2。按T1T2次序执行结果为A=3,B=4 串行调度策略,正确的调度,An Introduction to Database System,串行化调度,正确的调度,串行调度(b),假设A、B的初值均为2。T2T1次序执行结果为B=3,A=4 串行调度策略,正确的调度,An Introduction to Datab
11、ase System,不可串行化调度,错误的调度,不可串行化的调度,执行结果与(a)、(b)的结果都不同是错误的调度,An Introduction to Database System,可串行化调度,正确的调度,可串行化的调度,执行结果与串行调度(a)的执行结果相同是正确的调度,An Introduction to Database System,如何判断可串行化?,将所有可能的串行执行的结果计算出来。(X) 尝试计算一下调度的空间有多大? k (km) : k事务数, m -事务平均的操作数,An Introduction to Database System,如何判断可串行化?,是否可能
12、研究一下可串行性的数学性质?例如,我们可以试图寻找一个可串行性的充分条件,而且比较好判断。那么我们虽然会损失一些可能更好的调度方案,但是也是可以接受的。,较好判断的可串行调度子集,可串行调度集合,An Introduction to Database System,冲突可串行化调度,可串行化调度的充分条件一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc,如果Sc是串行的,称调度Sc为冲突可串行化的调度一个调度是冲突可串行化,一定是可串行化的调度,An Introduction to Database System,冲突可串行化调度(续),冲突操作
13、冲突操作是指不同的事务对同一个数据的读写操作和写写操作Ri (x)与Wj(x) /* 事务Ti读x,Tj写x*/Wi(x)与Wj(x) /* 事务Ti写x,Tj写x*/其他操作是不冲突操作不同事务的冲突操作和同一事务的两个操作不能交换(Swap),An Introduction to Database System,冲突可串行化调度(续),例今有调度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)把w2(A)与r1(B)w1(B)交换,得到: r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B)再把r2(A)与r1(B)w1(
14、B)交换: Sc2r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B)Sc2等价于一个串行调度T1,T2,Sc1冲突可串行化的调度,An Introduction to Database System,冲突可串行化调度(续),冲突可串行化调度是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行化调度。 例有3个事务 T1=W1(Y)W1(X),T2=W2(Y)W2(X),T3=W3(X)调度L1=W1(Y)W1(X)W2(Y)W2(X) W3(X)是一个串行调度。调度L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不满足冲突可串行化。但
15、是调度L2是可串行化的,因为L2执行的结果与调度L1相同,Y的值都等于T2的值,X的值都等于T3的值,An Introduction to Database System,小结,至此,我们已经清楚了问题:寻找到一种有效的办法,实现冲突可串行化调度。同时也留下了很多的开放问题:在并行计算机下的调度正确性定义?例如,有两种事务 R-G , G-R. 对于一种初始的状态 R,G 。只有两种可能的结果,G,G和R,R.为什么不能是G,R?是否存在比冲突可串行化更弱的有效的调度方法?,An Introduction to Database System,如何设计并发控制机制,并发控制的主要技术封锁(Lo
16、cking)时间戳(Timestamp)乐观控制法商用的DBMS一般都采用封锁方法,An Introduction to Database System,11.2 封锁,什么是封锁基本封锁类型锁的相容矩阵,An Introduction to Database System,什么是封锁,封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术,An Introduction to Database System,基本封锁类型,一个事务
17、对某个数据对象加锁后究竟拥有什么样的控制由封锁的类型决定。基本封锁类型排它锁(Exclusive Locks,简记为X锁)共享锁(Share Locks,简记为S锁),An Introduction to Database System,排它锁,排它锁又称为写锁若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁保证其他事务在T释放A上的锁之前不能再读取和修改A,An Introduction to Database System,共享锁,共享锁又称为读锁若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释
18、放A上的S锁保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改,An Introduction to Database System,锁的相容矩阵,An Introduction to Database System,锁的相容矩阵(续),在锁的相容矩阵中:最左边一列表示事务T1已经获得的数据对象上的锁的类型,其中横线表示没有加锁。最上面一行表示另一事务T2对同一数据对象发出的封锁请求。T2的封锁请求能否被满足用矩阵中的Y和N表示Y表示事务T2的封锁要求与T1已持有的锁相容,封锁请求可以满足N表示T2的封锁请求与T1已持有的锁冲突,T2的请求被拒绝,An Introduction
19、to Database System,使用封锁机制解决丢失修改问题,例:,事务T1在读A进行修改之前先对A加X锁当T2再请求对A加X锁时被拒绝T2只能等待T1释放A上的锁后T2获得对A的X锁这时T2读到的A已经是T1更新过的值15T2按此新的A值进行运算,并将结果值A=14送回到磁盘。避免了丢失T1的更新。,没有丢失修改,An Introduction to Database System,使用封锁机制解决不可重复读问题,事务T1在读A,B之前,先对A,B加S锁其他事务只能再对A,B加S锁,而不能加X锁,即其他事务只能读A,B,而不能修改当T2为修改B而申请对B的X锁时被拒绝只能等待T1释放B
20、上的锁T1为验算再读A,B,这时读出的B仍是100,求和结果仍为150,即可重复读T1结束才释放A,B上的S锁。T2才获得对B的X锁,可重复读,An Introduction to Database System,使用封锁机制解决读“脏”数据问题,例,事务T1在对C进行修改之前,先对C加X锁,修改其值后写回磁盘T2请求在C上加S锁,因T1已在C上加了X锁,T2只能等待T1因某种原因被撤销,C恢复为原值100T1释放C上的X锁后T2获得C上的S锁,读C=100。避免了T2读“脏”数据,不读“脏”数据,An Introduction to Database System,Locking 的问题,封
21、锁技术提供了一种可能的手段,可以用于并行操作的调度,使用得当,可以保持数据库的一致性。但封锁也带来一些新的问题死锁活锁,An Introduction to Database System,活锁,事务T1封锁了数据R事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求T2有可能永远等待,这就是活锁的情形,An Introduction to Database System,活锁(续),活 锁,An Introduction to Database System,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十一章 并发控制要点课件 第十一 并发 控制 要点 课件
链接地址:https://www.31ppt.com/p-1547625.html