数据库原理课件_第b章(并发控制).ppt

数据库原理课件_第b章(并发控制).ppt

ID:58780220

大小:202.50 KB

页数:43页

时间:2020-10-03

数据库原理课件_第b章(并发控制).ppt_第1页
数据库原理课件_第b章(并发控制).ppt_第2页
数据库原理课件_第b章(并发控制).ppt_第3页
数据库原理课件_第b章(并发控制).ppt_第4页
数据库原理课件_第b章(并发控制).ppt_第5页
资源描述:

《数据库原理课件_第b章(并发控制).ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据库原理课件─之十一学校:大连理工大学单位:计算机学院计算机技术研究所第11章并发控制第1节 并发控制概述第2节 封锁(Locking)第3节 活锁和死锁第4节 并发调度的可串行性第5节 两阶段锁协议第6节 封锁的粒度1并发控制概述多用户数据库系统允许多个用户同时使用的数据库系统。多事务执行方式串行执行:每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行。(不能充分利用系统资源如I/O,CPU等,不能发挥数据库共享资源的特点)交叉并发:单处理机,操作轮流交叉执行。虽然并行事务并没有真正地并行运行,但减少了处理机的空闲时间,提高了系统效率。同时并发:多处理机,多

2、个处理机同时运行多个事务,实现多个事务真正的并行运行。事务的串行执行与交叉并发执行T1T2T3事务串行执行事务交叉并发执行事务并发执行带来的问题多个事务同时存取同一数据。可能会存取和存储不正确的数据,从而破坏事务的一致性和数据库的一致性。并发控制DBMS必须提供并发控制机制,以保证事务的隔离性,保证数据库的一致性。并发控制机制是衡量一个DBMS系统性能的重要标志之一。并发控制子系统,通过对并发事务的并发操作进行正确调度,来保证事务的隔离性和一致性的。并发操作对数据库一致性影响的实例飞机订票系统中两个售票事务的并发执行甲售票点(甲事务)读出某航班的机票余额A,设A=16;乙售票点

3、(乙事务)读出同一航班的机票余额A,也为16;甲售票点卖出一张机票,AA-1,把A=15写回数据库。乙售票点也卖出一张机票,AA-1,把A=15写回数据库。售票结果卖出两张机票,数据库中却只减少了一张。原因在事务并发执行时,DBMS对事务的并发操作序列进行了随机调度。使得甲事务对数据库的修改被乙事务的修改结果所覆盖。这种情况称丢失修改。并发操作会引起哪些数据不一致性呢?数据不一致性丢失修改(LostUpdate)不可重复读(Non-repeatableRead)读“脏”数据(DirtyRead)记号R(x):读数据xW(x):写数据x三种数据不一致性①R(A)=16②③A=

4、A-1W(A)=15④R(A)=16A=A-1W(A)=15①R(A)=50R(B)=100求和=150②③R(A)=50R(B)=200求和=250(验算不对)R(B)=100B=B*2W(B)=200①R(C)=100R(C)=C*2W(C)=200②③RollbackC恢复为100R(C)=200T1T2T1T2T1T2(a)丢失修改(b)不可重复读(c)读“脏”数据三类数据不一致性丢失修改两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改丢失。不可重复读事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。不可重复

5、读的三种情况事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读取该数据时,得到与前一次不同的值。事务T1按条件读,事务T2删除其中记录,T1再读,发现数据丢失。事务T1按一定条件从数据库中读取数据,事务T2插入记录,T1再读,发现多了一些记录。读“脏”数据事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已经修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就是脏数据(不正确的数据)。产生数据不一致的原因原因对并发事务的并发操作进行随机调度破坏了事务间的隔离性,引起了数据的不一致。并发控制的任务

6、用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。并发控制的主要技术有封锁(Locking):商用的DBMS一般都采用封锁方法时间戳(Timestamp)乐观控制法2封锁什么是封锁?封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T对该数据对象就有了一定的控制,在事务T释放它的锁之前,其它事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。两种基本锁排它锁(ExclusiveLocks,简称X锁)也称写锁,若事务T对数据对象A加上X锁,则事务T可以对A读和修改,其他任何事务都不能

7、对A再加任何锁,直到T释放A上的锁。共享锁(ShareLocks,简称S锁)也称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改,其他事务只能对A再加S锁,不能加X锁,直到T释放A上的S锁。排它锁与共享锁的相容矩阵XS-XNNYSNYY-YYYT1T2利用封锁解决丢失修改问题①XlockA获得②读A=16③A=A-1写回A=15CommitUnlockA④⑤XlockA等待等待等待等待获得XlockA读A=15A=A-1写回A=14CommitUnlockAT1T2(a)没有丢

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

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

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