【数据库原理】并发控制

【数据库原理】并发控制

ID:40149813

大小:123.50 KB

页数:56页

时间:2019-07-23

【数据库原理】并发控制_第1页
【数据库原理】并发控制_第2页
【数据库原理】并发控制_第3页
【数据库原理】并发控制_第4页
【数据库原理】并发控制_第5页
资源描述:

《【数据库原理】并发控制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章内容提要保证数据一致性是对数据库的最基本的要求。数据库的重要特征是它能为多个用户提供数据共享。因此,DBMS必须提供并发控制机制来保证数据库的一致性。数据库的并发控制以事务为单位,通常使用封锁技术实现并发控制。本章介绍两类最常用的封锁和三级封锁协议。不同的封锁和不同级别的封锁协议所提供的系统一致性保证是不同的,提供数据共享度也是不同的。对数据对象施加封锁,会带来活锁和死锁问题,并发控制机制必须提供适合数据库特点的解决方法。第八章并发控制本章重点:数据库并发控制的基本原理与技术封锁协议两段锁协议本章难点:封锁协议

2、两段锁协议第八章并发控制数据库是一个共享资源,可以供多个用户使用。允许多个用户同时使用的数据库系统称为多用户数据库系统。为了充分利用系统资源,发挥数据库共享资源的特点,应该允许多个事务并行的执行。当多个用户并发地存取数据库时就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以DBMS必须提供并发控制机制。并发控制机制是衡量一个数据库管理系统性能的重要标志之一。第八章并发控制例1:考虑飞机订票系统中的一个活动序列: 1.甲售票点(甲事务)读出某航班的机票

3、余额A,设A=16. 2.乙售票点(乙事务)读出同一航班的机票余额A,也为16. 3.甲售票点卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库. 4.乙售票点也卖出一张机票,修改余额A←A-1.所以A为15,把A写回数据库. 结果明明卖出两张机票,数据库中机票余额只减少1。第八章并发控制8.1并发控制概述并发操作带来的数据不一致性包括三类:(A)丢失修改(lostupdate)(B)不可重复读(non-repeatableread)(C)读“脏”数据(dirtyread)第八章并发控制8.1并发控制概

4、述第八章并发控制8.1并发控制概述(A)丢失修改两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。第八章并发控制8.1并发控制概述T1T2⑴读A=16⑵读A=16⑶AA-1写回A=15⑷AA-1写回A=15(A)丢失修改第八章并发控制8.1并发控制概述(B)不可重复读不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。第八章并发控制8.1并发控制概述T1T2⑴读A=50读B=100求和=150⑵⑶读A=50读B=200求和=250读

5、B=100BB×2写回B=200第八章并发控制8.1并发控制概述(C)读“脏”数据T1T2⑴读C=100CC×2写回C=200⑵⑶ROLLBACKC恢复为100读C=200产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性——这就是DBMS中并发控制机制的责任。 并发控制的主要技术——封锁(Locking)。第八章并发控制8.1并发控制概述1.封锁的定义封锁就是事务T在对某个数据对象操作之前

6、,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。2.封锁类型基本的封锁类型有两种:排它锁(Exclusivelocks简记为X锁)共享锁(Sharelocks简记为S锁).第八章并发控制8.2封锁(Locking)第八章并发控制8.2封锁(Locking)(1)排它锁(又称为写锁)若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其它事务在T释放A上的锁之前不能再读

7、取和修改A。第八章并发控制8.2封锁(Locking)(2)共享锁(又称为读锁)若事务T对数据对象A加上S锁,则事务可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其它事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。第八章并发控制8.2封锁(Locking)排它锁和共享锁的控制方式相容矩阵:T2T1XS—XNNYSNYY—YYYY=Yes相容的请求N=No相容的请求注意:X锁和S锁是互斥的第八章并发控制8.3封锁协议在运用X锁和S锁这两种基本封锁,对数据对象加

8、锁时,还需要约定一些规则,例如应何时申请X锁或S锁、持锁时间、何时释放等。我们称这些规则为封锁协议(LockingProtocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。不同级别的封锁协议达到的系统一致性级别是不同的。第八章并发控制8.3封锁协议一、1级封锁协议 1级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。