第9章 并发控制ppt课件.ppt
《第9章 并发控制ppt课件.ppt》由会员分享,可在线阅读,更多相关《第9章 并发控制ppt课件.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9 9章章 并发控制并发控制本章导读本章导读v 主要内容主要内容 介绍数据库并发控制的基本概念(并发控制、封锁、封锁协议、活锁、死锁、可串行化的调度、封锁粒度、意向锁)和实现技术机制。v 学习目标学习目标(1)理解3类数据不一致性问题与三级封锁协议的关联;(2)掌握活锁和死锁的预防措施;(3)掌握可串行化的调度和两段锁的基本应用。9.1 并发控制概述并发控制概述9.1.1 并发控制的概念并发控制的概念v当数据库中有多个事务并发执行时,由于事务之间操作的相互干扰,事务的隔离性不一定能保持,从而导致对数据库一致性潜在的破坏。为保持事务的隔离性,系统必须对并发事务之间的相互作用加以控制,这称为并
2、发控制并发控制。9.1 并发控制概述并发控制概述数据不一致问题数据不一致问题v 并发操作带来的数据不一致性主要包括3类:丢失修改、不可重复读和读“脏”数据。以火车订票系统为例,列出了3种数据不一致问题情况,如图9-1所示。9.1 并发控制概述并发控制概述图图9-1 3种数据不一致问题的实例种数据不一致问题的实例1 1丢失修改丢失修改 在并发操作情况下,对T1、T2事务的操作序列的调度是随机的,T2事务修改A并写回后覆盖覆盖了T1事务的修改,所以T1事务的修改被丢失,如图9-1(a)所示。9.1 并发控制概述并发控制概述2 2不可重复读不可重复读 事务T1读取某一数据后,事务T2对其做了修改,当
3、T1再次读取该数据时,得到与前次不同的值,即不可重复读,如图9-1(b)所示。 9.1 并发控制概述并发控制概述3 3读读“脏脏”数据数据 T1由于某种原因对数据恢复成原值,此时T2 读到的数据就与数据库中的数据不一致,则T2 读到的数据为“脏”数据,如图9-1(c)所示。9.1 并发控制概述并发控制概述v产生上述3类数据不一致的主要原因是并发操作并没有保证事务的隔离性。并发控制就是要用正确正确的方式调度的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。9.1 并发控制概述并发控制概述9.2封封 锁锁v封锁机制是并发控制的重要手段。所谓封锁封锁是使事务对它
4、要操作的数据有一定的控制权控制权。v封锁通常包含3环节:申请加锁、获得锁以及释放锁申请加锁、获得锁以及释放锁。(1)事务T在对某个数据对象操作之前,先向系统发出加锁请求;(2)加锁后事务T就获得对该数据对象的控制权;(3)只有事务T释放该锁,其他的事务才能更新此数据对象。v为了达到封锁的目的,事务在使用时应选择合适的锁,并遵循一定的封锁协议。9.2.1 9.2.1 封锁类型封锁类型v最基本的封锁类型有两种:排它锁排它锁(Exclusive Locks,简称X锁)和共享锁共享锁(Share Locks,简称S锁)。9.2封封 锁锁1 1排排它它锁锁(写锁写锁)v若事务T对数据对象A加上X X锁锁
5、,则只允许T读取和修改A,其他任何事务既不能读取和修改A,也不能再对A加任何类型的锁,直到T释放A上的锁。申请对A的排它锁,可以表示为Xlock(A)。9.2封封 锁锁2 2共享锁共享锁(读锁读锁)v若事务T对数据对象A加上S S锁锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。申请对A的共享锁,可以表示为Slock(A)。9.2封封 锁锁9.2封封 锁锁封锁协议封锁协议 只对数据对象加锁,并不能保证事务的一致性,还需要约定一些规则规则。例如,何时申请X锁或S锁、持锁时间、何
6、时释放等,这些规则称为封锁协议封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。 封锁协议可分为三级,各级封锁协议对并发操作带来的丢失修改、不可重复读和读“脏”数据等不一致问题,可以在不同程度上予以解决。9.2封封 锁锁 表表9-1 不同级别的封锁协议不同级别的封锁协议9.2封封 锁锁图图9-2 用封锁机制解决用封锁机制解决3种数据不一致问题的实例种数据不一致问题的实例9.3 活锁和死锁活锁和死锁v封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题: 死锁 活锁9.3 活锁和死锁活锁和死锁1.活锁活锁表表9-2 活锁的情形活锁的情
7、形v避免活锁:采用先来先服务的策略避免活锁:采用先来先服务的策略 当多个事务请求封锁同一数据对象时当多个事务请求封锁同一数据对象时 按请求封锁的先后次序对这些事务排队按请求封锁的先后次序对这些事务排队 该数据对象上的锁一旦释放,首先批准申请队该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁列中第一个事务获得锁9.3 活锁和死锁活锁和死锁T1T2lock R1Lock R2Lock R2.等待等待等待等待Lock R1等待等待等待等待等待等待等待等待2.2.死锁死锁表表9-3 死锁的情形死锁的情形9.3 活锁和死锁活锁和死锁v解决死锁的方法:解决死锁的方法:(1 1)预防死锁(一次封
8、锁法、顺序封锁法)预防死锁(一次封锁法、顺序封锁法)(2 2)死锁的诊断与解除(超时法、事务等待图法)死锁的诊断与解除(超时法、事务等待图法)9.3 活锁和死锁活锁和死锁表表9-4 解决死锁方法的对比解决死锁方法的对比9.3 活锁和死锁活锁和死锁9.4 并发调度的可串行性并发调度的可串行性v计算机系统对并发事务中并发操作的调度是随机的,而不同的调度可能会产生不同的结果,那么哪个结果是正确的呢?v如果一个事务的运行没有受到其他事务的干扰,就可以认为该事务的运行结果是正常的或者预想的。事务串行执行的顺序不同可能会产生不同的结果,但由于不会将数据库置于不一致状态,那么所有事务串行起来的调度策略都是正
9、确的调度策略。9.4 并发调度的可串行性并发调度的可串行性v可串行化可串行化(Serializable)调度调度n多个事务的并发执行是正确的,当且仅当其多个事务的并发执行是正确的,当且仅当其结果与按某一次序结果与按某一次序串行串行地执行这些事务时的地执行这些事务时的结果相同。结果相同。v可串行性可串行性(Serializability) 是并发事务正确调度的准则;是并发事务正确调度的准则; 一个给定的并发调度,当且仅当它是可串行一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。化的,才认为是正确调度。 9.4 并发调度的可串行性并发调度的可串行性【例例】 现在有两个事务,分别包含下
10、列操作:现在有两个事务,分别包含下列操作: 事务事务T1T1:读:读B B;A=B+1A=B+1;写回;写回A A 事务事务T2T2:读:读A A;B=A+1B=A+1;写回;写回B B现给出对这两个事务不同的调度策略现给出对这两个事务不同的调度策略 。9.4 并发调度的可串行性并发调度的可串行性T1T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3W(A)Unlock ASlock AX=R(A)=3Unlock AXlock BB=X+1=4W(B)Unlock B串行调度串行调度(a)n 假设假设A、B的初值均为的初值均为2。n 按按T1T2次序执行结果为次序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第9章 并发控制ppt课件 并发 控制 ppt 课件
限制150内