数据库事务ppt课件.ppt
《数据库事务ppt课件.ppt》由会员分享,可在线阅读,更多相关《数据库事务ppt课件.ppt(63页珍藏版)》请在三一办公上搜索。
1、1,李宁 西北工业大学计算机学院,第十章 并发控制,2,2,第九章内容回顾,本章重点事务的概念和性质事务故障、系统故障和介质故障的恢复技术与原理Redo&Undo本章难点具有检查点的恢复技术,3,3,本章目录,10.1 并发控制概述10.2 封锁10.3 封锁协议10.4 活锁和死锁10.5 并发调度的可串行性10.6 两段锁协议10.7 封锁的粒度11.8 小结,4,4,10.1 并发控制概述,多用户数据库系统银行、票务系统等多事务执行方式事务串行执行交叉并发方式(Interleaved Concurrency)同时并发方式(simultaneous concurrency),本章讨论的数据
2、库系统并发控制技术是以单处理机系统为基础的,5,5,10.1 并发控制概述,事务是并发控制的基本单位并发控制的任务对并发操作进行正确调度保证事务的隔离性保证数据库的一致性,6,6,10.1 并发控制概述,并发操作带来的数据不一致性丢失修改(lost update)-T2提交的结果覆盖了T1提交的结果不可重复读(non-repeatable read)-T1读,T2更新,T1再次读(与第一次读取数据不同)该类错误中还包括:幻读(phantom row)-T1读后,T2删除/插入部分记录,T1再读就不同 脏数据(dirty read)-T1修改写回,T2读,T1回滚,此时T2读数据为脏数据,7,7
3、,10.1 并发控制概述,丢失修改(lost update)-T2提交的结果覆盖了T1提交的结果,8,8,10.1 并发控制概述,不可重复读(non-repeatable read)-T1读,T2更新,T1再次读(与第一次读取数据不同),T1读取B=100进行运算T2读取同一数据B,对其进行修改后将B=200写回数据库T1为了对读取值校对重读B,B已为200,与第一次读取值不一致,9,9,10.1 并发控制概述,幻读(phantom row)-T1读后,T2删除/插入部分记录,T1再读就不同,10,10,10.1 并发控制概述,脏数据(dirty read)-T1修改写回,T2读,T1回滚,此
4、时T2读数据为脏数据,T1将C值修改为200,T2读到C为200T1由于某种原因撤销,其修改作废,C恢复原值100这时T2读到的C为200,与数据库内容不一致,就是“脏”数据,11,11,10.1 并发控制概述,并发控制的主要技术封锁(Locking)时间戳(Timestamp)乐观控制法 多版本并发控制(MVCC),12,12,本章目录,10.1 并发控制概述10.2 封锁10.3 封锁协议10.4 活锁和死锁10.5 并发调度的可串行性10.6 两段锁协议10.7 封锁的粒度11.8 小结,13,13,10.2 封锁,什么是封锁封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向
5、系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。基本封锁类型一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁的类型决定的。排它锁(Exclusive lock,简记为X锁,又称为写锁)若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。共享锁(Share lock,简记为S锁,又称为读锁)若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,14,14,10.2 封锁,锁的相容矩阵,15,15,本章目录,10.1 并
6、发控制概述10.2 封锁10.3 封锁协议10.4 活锁和死锁10.5 并发调度的可串行性10.6 两段锁协议10.7 封锁的粒度11.8 小结,16,16,10.3 封锁协议,什么是封锁协议 在运用X锁和S锁对数据对象加锁时,需要约定一些 规则,这些规则为封锁协议(Locking Protocol)。何时申请X锁或S锁持锁时间何时释放不同的规则所形成的各种不同的封锁协议,它们分别在不同的程度上为并发操作的正确调度提供一定的保证。一级封锁协议二级封锁协议三级封锁协议,17,17,10.3 封锁协议,一级封锁协议事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括commit
7、和rollback。注意读数据无需加锁!,可以解决:-修改丢失无法解决:-可重复读-读脏数据,18,18,10.3 封锁协议,二级封锁协议 一级封锁协议+事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。,可以解决:-修改丢失-读脏数据无法解决:-可重复读,19,19,10.3 封锁协议,三级封锁协议 一级封锁协议+事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。,可以解决:-修改丢失-读脏数据-可重复读无法解决:,20,20,10.3 封锁协议,封锁协议小结-各级封锁区别:什么操作需要申请封锁以及何时释放锁-封锁协议级别越高,一致性程度越高,21,21,本章目录,10.
8、1 并发控制概述10.2 封锁10.3 封锁协议10.4 活锁和死锁10.5 并发调度的可串行性10.6 两段锁协议10.7 封锁的粒度11.8 小结,22,22,10.4.1 活锁,封锁机制带来的问题死锁活锁,活锁:T1、T2、T3、T4相继申请R的锁,可是T2可能永远处于等待之中。,解决方案:依据请求封锁的先后次序对事务排队,首先批准申请队列中第一个事务获得锁。,23,23,10.4.2 死锁,死锁,T1在等待T2释放R2,而T2又在等待T1释放R1,T1和T2两个事务永远不能结束,形成死锁。,24,24,10.4.2 死锁,解决死锁-预防死锁发生,破坏产生死锁的条件,1.一次封锁法 要求
9、每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。如右图:T1一次对R1和R2加锁引起问题:1.扩大封锁范围,降低系统并发度。2.由于数据的动态性,难以事先精确 确定需要加锁的数据对象-扩大封锁范围,系统并发度 再次降低,25,25,10.4.2 死锁,解决死锁-预防死锁发生,2.顺序封锁法 预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。如树结构中,封锁顺序必须是从根节点开始。引起问题:1.维护成本高:-需要封锁的数据对象极多,-随数据的插入、删除等操作而不断地变化。2.难以实现:事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,
10、因此也就很难按规定的顺序去施加封锁。,死锁的预防不太适用,26,26,10.4.2 死锁,解决死锁-死锁的诊断与解除,1.超时法 如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。优点:实现简单缺点:-有可能误判死锁-时限若设置得太长,死锁发生后不能及时发现,27,27,10.4.2 死锁,解决死锁-死锁的诊断与解除,2.等待图法 用事务等待图动态反映所有事务的等待情况。,-若T1等待T2,则T1,T2之间划一条有向边,从T1指向T2-定期检测,如果发现该有向图中存在回路,则认为存在死锁,解除死锁:选择一个处理死锁代价最小的事务,将其撤消,释放其所持有的锁,使其它事务能继续运行下去。,
11、28,28,本章目录,10.1 并发控制概述10.2 封锁10.3 封锁协议10.4 活锁和死锁10.5 并发调度的可串行性10.6 两段锁协议10.7 封锁的粒度11.8 小结,29,29,10.5 并发调度的可串行性,什么样的并发操作调度是正确的?并行调度是随机的,不同的调度可能会产生不同的结果。将所有事务串行起来的调度策略一定是正确的调度策略。以不同的顺序串行执行事务也可能会产生不同的结果,但由于不会将数据库置于不一致状态,所以都可认为是正确的。,可串行化(Serializable)的调度策略:几个事务的并行执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。,30,30
12、,10.5.1 可串行性调度,可串行化调度事务T1:读B;A=B+1;写回A事务T2:读A;B=A+1;写回B,A=3B=4,A=4B=3,31,31,10.5.1 可串行性调度,不可串行化调度事务T1:读B;A=B+1;写回A事务T2:读A;B=A+1;写回B,A=3B=3,A=3B=4,32,32,10.5.2 冲突可串行性调度,冲突可串行化调度:判断可串行化的方法之一一个比可串行化更严格的条件商用系统中的调度器采用冲突操作:不同的事务对同一数据的读写操作和写写操作Ri(x)与Wj(x)/*事务Ti读x,Tj写x,其中ij*/Wi(x)与Wj(x)/*事务Ti写x,Tj写x,其中ij*/不
13、同事务的冲突操作是不能交换的,33,33,10.5.2 冲突可串行性调度,冲突可串行化调度一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc,如果Sc是串行的,称调度Sc是冲突可串行化的调度。,调度1,调度2,调度3,调度4,因为调度1等价于一个串行调度T1-T2,所以调度1是一个冲突可串行化的调度。,34,34,10.5.2 冲突可串行性调度,若一个调度是冲突可串行化,则一定是可串行化的调度。,因为Sc2等价于一个串行调度T1-T2,所以Sc1是冲突可串行化的调度。Sc1也是一个可串行化调度。,Sd调度:r1(A)w1(A)r2(A)W2(A)r
14、2(B)w2(B)r1(B)w1(B)是否可串行化?,35,35,10.5.2 冲突可串行性调度,冲突可串行化调度是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行化调度。例如:有三个事务,但是调度L2是可串行化的,因为L2执行的结果与调度L1相同,Y的值都等于T2的值,X的值都等于T3的值,如何保证并发操作调度正确性?封锁方法:两段锁协议时标方法乐观方法,36,36,本章目录,10.1 并发控制概述10.2 封锁10.3 封锁协议10.4 活锁和死锁10.5 并发调度的可串行性10.6 两段锁协议10.7 封锁的粒度11.8 小结,37,37,10.6 两段锁协议,“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 事务 ppt 课件

链接地址:https://www.31ppt.com/p-2157246.html