华中科技大学数据库课件第11章并发控制.ppt
《华中科技大学数据库课件第11章并发控制.ppt》由会员分享,可在线阅读,更多相关《华中科技大学数据库课件第11章并发控制.ppt(94页珍藏版)》请在三一办公上搜索。
1、An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.1 并发控制概述,并发控制:保证多用户并发操作数据库中信息时的正确性、一致性所采取的措施。事务的调度事务的一次执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序一组事务的调度必须保证包含了所有事务的操作指令一个事务中指令的顺序必
2、须保持不变,An Introduction to Database System,11.1 并发控制概述,串行调度在串行调度中,属于同一事务的指令紧挨在一起执行对于有n个事务的事务组,可以有n!个有效调度并行(发)调度在并行调度中,来自不同事务的指令可以交叉执行.当并行调度等价于某个串行调度时,则称它是可串行化的、正确的,An Introduction to Database System,11.1 并发控制概述,串行 vs 并行基本比较并行事务会破坏数据库的一致性串行事务效率低并行的优点一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量系统中存在着周期
3、不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均响应时间核心问题在保证一致性的前提下最大限度地提高并发度,An Introduction to Database System,11.1 并发控制概述,并发操作可能带来的数据不一致性丢失更新(Lost Update)不可重复读(Non-Repeatable Read)读“脏”数据(Dirty Read),An Introduction to Database System,11.1 并发控制概述,丢失更新两个以上事务从DB中读入同一数据并修改,其中一事务(后提交的事务)的提交结果破坏了另一事务(
4、先提交的事务)的提交结果,导致先前提交事务对DB的修改被丢失。,An Introduction to Database System,11.1 并发控制概述,丢失更新举例:事务T1对数据库的修改丢失了,An Introduction to Database System,11.1 并发控制概述,不可重复读不可重复读是指事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。具体地讲,不可重复读包括三种情况:事务2修改了事务1所读数据,当事务1再次读该数据时,得到与前一次不同的值。事务1按一定条件从数据库中读取某些数据记录后,事务2删除了其中部分记录,当事务1再次按相同条件读取数据
5、时,发现某些记录神秘地消失了。事务1按一定条件从数据库中读取某些数据记录后,事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。,An Introduction to Database System,11.1 并发控制概述,不可重复读举例(1),An Introduction to Database System,11.1 并发控制概述,不可重复读举例(2),An Introduction to Database System,11.1 并发控制概述,读“脏”数据事务1修改某一数据,并将其写回磁盘事务2读取同一数据后,事务1由于某种原因被撤消.,这时事务1已修改过的数据被
6、恢复原值事务2读到的不稳定的瞬间数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。,An Introduction to Database System,11.1 并发控制概述,产生三类数据不一致的原因并发操作破坏了事务的隔离性必须对并发的一事务加以控制才能避免此类现象并发控制机制的任务对并发操作进行正确调度保证事务的隔离性保证数据库的一致性并发控制的方法加锁乐观假设时间戳,An Introduction to Database System,11.1 并发控制概述,SQL的隔离级别事务准备接受不一致数据的级别称为隔离级别,隔离级别是一个事务必须与其它事务进行隔离的程度.较低的隔
7、离级别可以增加并发,但代价是降低数据的正确性。较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响。应用程序要求的隔离级别确定了 SQL Server 使用的锁定行为,An Introduction to Database System,11.1 并发控制概述,SQL的隔离级别(续)从低到高可读未提交(Read Uncommitted)允许读未提交的记录可读提交(Read Committed)只允许读已提交的记录,但不要求可重复读可重复读(Repeatable Read)只允许读取已提交的记录,并要求一个事务对同一记录的两次读取之间,其它事务不能对该记录进行更新可串行化(Seriali
8、zable)一个调度的执行必须等价于一个串行调度的结果,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.2 封锁,封锁是实现并发控制的一个非常重要的技术封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务
9、T释放它的锁之前,其它的事务不能更新此数据对象。DBMS通常提供了多种类型的封锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由封锁的类型决定的。,An Introduction to Database System,11.2 封锁,封锁的类型排它锁(eXclusive lock,简记为X锁)又称写锁,若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁共享锁(Share lock,简记为S锁)又称为读锁,若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁,An Introduction
10、 to Database System,11.2 封锁,封锁类型的相容矩阵,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.3 封锁协议,在运用X锁和S锁对数据对象加锁时,需要约定一些规则:封锁协议(Locking Protocol)何时申请X锁或S锁持锁时间、何时释放 不同的封锁协
11、议,在不同的程度上为并发操 作的正确调度提供一定的保证。不同级别的封锁协议达到的系统一致性级别是不同的。常用的封锁协议:支持一致性维护的三级封锁协议/支持并行调度可串行化的两段锁协议/避免死锁的协议,An Introduction to Database System,11.3 封锁协议,一、一级封锁协议事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放正常结束(COMMIT)非正常结束(ROLLBACK)1级封锁协议可防止丢失修改在1级封锁协议中,如果仅是读数据,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。,An Introduction to Database Syst
12、em,11.3 封锁协议,没有丢失更新,An Introduction to Database System,11.3 封锁协议,读“脏”数据,An Introduction to Database System,11.3 封锁协议,不可重复读,An Introduction to Database System,11.3 封锁协议,二、二级封锁协议1级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁2级封锁协议可以防止丢失修改和读“脏”数据。在2级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。,An Introduction to Database Syste
13、m,11.3 封锁协议,不可重复读,An Introduction to Database System,11.3 封锁协议,三、三级封锁协议1级封锁协议+事务T在读取数据R前必须先加S锁,直到事务结束才释放3级封锁协议可以防止丢失修改、读“脏”数据以及不可重复读。,An Introduction to Database System,11.3 封锁协议,三级协议的主要区别什么操作需要申请封锁何时释放锁(即持锁时间)不同级别的封锁协议达到的系统一致性级别不同,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活
14、锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction to Database System,11.4 活锁和死锁,封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题死锁活锁,An Introduction to Database System,11.4 活锁和死锁,活锁事务T1封锁数据R,事务T2又请求封锁R,于是T2等待。此时,T3也请求封锁R,被迫等待。当T1释放R上的封锁后,系统却首先批准了T3的请求,T2被迫继续等待。然后,又有别的事务,比如T
15、4请求封锁R,当T3释放R上的封锁后,系统统又批准了T4的请求,T2有可能永远等待。这就是活锁。如何避免活锁先来先服务,An Introduction to Database System,11.4 活锁和死锁,死锁两个或两个以上事务均处于等待状态,每个事务都在等待其中另一个事务封锁的数据,导致任何事务都不能继续执行的现象称为死锁。死锁的产生条件互斥(排它性控制);不可剥夺(释放前,其它事务不能剥夺);部分分配(每次申请一部分,申请新的时,又占用已获得者);环路(循环链中,每事务获得数据同时又被另一事务请求)。,An Introduction to Database System,11.4 活
16、锁和死锁,死锁的例子,An Introduction to Database System,11.4 活锁和死锁,解决死锁的方法死锁的预防死锁的诊断与解除,An Introduction to Database System,11.4 活锁和死锁,死锁的预防(破坏产生死锁的条件)互斥-?不可剥夺-预防?部分分配环路方法一次封锁法 顺序封锁法,An Introduction to Database System,11.4 活锁和死锁,一次封锁法每个事务事先一次获得所需数据的全部锁特点简单,无死锁难以确定封锁对象封锁范围扩大化,从而并发度低,An Introduction to Database
17、System,11.4 活锁和死锁,顺序封锁法预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁特点简单,无死锁难以确定封锁对象顺序也难以确定,An Introduction to Database System,11.4 活锁和死锁,结论在操作系统中广为采用的预防死锁的策略并不很适合数据库的特点DBMS在解决死锁的问题上更普遍采用的是诊断并解除死锁的方法,An Introduction to Database System,11.4 活锁和死锁,死锁的诊断与解除允许死锁发生解除死锁由DBMS的并发控制子系统定期检测系统中是否存在死锁一旦检测到死锁,就要设法解除两种方法超时法等待图法
18、,An Introduction to Database System,11.4 活锁和死锁,超时法如果一个事务的等待时间超过了规定的时限,就认为发生了死锁优点:实现简单缺点有可能误判死锁时限标准难以把握。时限若设置得太长,死锁发生后不能及时发现;太短则易误判,An Introduction to Database System,11.4 活锁和死锁,等待图法用事务等待图动态反映所有事务的等待情况事务等待图是一个有向图G=(T,U)T为结点的集合,每个结点表示正运行的事务U为边的集合,每条边表示事务等待的情况若T1等待T2,则T1,T2之间划一条有向边,从T1指向T2并发控制子系统周期性地(比
19、如每隔1 min)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。,An Introduction to Database System,11.4 活锁和死锁,解除死锁选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去。,An Introduction to Database System,11.1 并发控制概述11.2 封锁11.3 封锁协议11.4 活锁和死锁11.5 并发调度的可串行性11.6 两段锁协议11.7 封锁的粒度11.8 SQL Server的并发控制11.9 小结,第11章 并发控制,An Introduction t
20、o Database System,11.5 并发调度的可串行性,DBMS对并发事务不同的调度可能会产生不同的结果什么样的调度是正确的?多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同。这种并行调度策略称为可串行化(Serializable)的调度。,An Introduction to Database System,11.5 并发调度的可串行性,可串行化是并行事务正确性的唯一准则例:现在有两个事务,分别包含下列操作:事务1:读B;A=B+1;写回A;事务2:读A;B=A+1;写回B;假设A的初值为2,B的初值为2。串行执行先事务1,再事务2先事务2,再事务1
21、交错执行不可串行化的调度可串行化的调度,An Introduction to Database System,11.5 并发调度的可串行性,先事务1,再事务2,An Introduction to Database System,11.5 并发调度的可串行性,先事务2,再事务1,An Introduction to Database System,11.5 并发调度的可串行性,不可串行化的调度:跟任何一种串行执行的结果都不相同,An Introduction to Database System,11.5 并发调度的可串行性,可串行化的调度:与某一串行执行的结果相同,An Introducti
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 数据库 课件 11 并发 控制

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