11并发控制.ppt
《11并发控制.ppt》由会员分享,可在线阅读,更多相关《11并发控制.ppt(63页珍藏版)》请在三一办公上搜索。
1、第11章 数据库并发控制,11.1 事务的基本概念11.2 并发控制概述11.3 封锁11.4 并发调度的可串行性11.5 两段锁协议11.6 封锁的粒度,蹋嗜脊尊坤士湃惮擎日侍致轩歉缨迟硕耗笋巡沾轿熄智旦胆沃乒步嚷叔桌11并发控制11并发控制,第11章 数据库并发控制,问题的提出:数据库是一个共享资源,应该允许多个用户程序并行地存取数据,当对数据库进行并行操作时,有可能出现数据不一致的情况。并行操作:在单处理机系统中,事务的并行执行实际上是这些并行事务的操作轮流交叉进行。,梅堰肉临佐耐涉艘椎舟叠涝买应络赶械辽弄绪猪慢苛画瘤宠乃老鸭告心刀11并发控制11并发控制,数据库技术,并发操作举例 考虑
2、飞机订票系统。设有两个订票点,机票余票A=15。,取A=15修改A=A-1写回数据库A=14,取A=15修改A=A-1写回数据库A=14,T,甲售票点,乙售票点,结果明明卖出两张机票,数据库中机票余额只减少1,族膳现源豆锰卢监甚饶诌件量铬枢齐敞汁水沮宠叫左揪桐圃束芽螺仗舰畔11并发控制11并发控制,11.1 事务的基本概念,定义是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位事务和程序比较在关系数据库中,一个事务可以是一条或多条SQL语句,也可以包含一个或多个程序。一个程序通常包含多个事务SQL Server 中事务分类(1)系统事务:一条语句就是一个事务(
3、2)用户定义事务:,偷滋租帧乌陇巴跑桑陵李购庐搪眼膊闻匀尚婶峦硕昧施市油靡各揍瘪摆翻11并发控制11并发控制,系统提供的事务语句如下:ALTER TABLE、CREATE、DELETE、DROP、GRANT、INSERT、OPEN、SELECT、UPDATE等用户定义事务BEGIN TRANSACTION BEGIN TRANSACTION SQL 语句1 SQL 语句1 SQL 语句2 SQL 语句2。COMMIT ROLLBACK,COMMIL:表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。ROLLBACK:表示回滚,即在
4、事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,滚到事务开始时的状态,呕慧偏赚坑晋叠溪密丝藤硕服瘤码羽徽舜菠耪蔫锄腹晓狰磕振砾钎琳拴守11并发控制11并发控制,11.1 事务的基本概念,事务的ACID特性:原子性(Atomicity)事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(Consistency)事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(Isolation)一个事务的执行不能被其他事务干扰。即并发执行的各个事务之间不能互相干扰。多个并发执行的结果和分
5、别单独执行单个事务的结果完全一样。持续性(Durability)指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。,饰首甲鄙船宣溺摈干钟姥允舵散屈仪承间瘸嗣愈喉笔溜币焦船樊堑琳闸循11并发控制11并发控制,11.2 并发控制概述,并发控制机制的任务对并发操作进行正确调度保证事务的隔离性保证数据库的一致性,躬赘宪驮侯刮疽爽田抡谤饵跌桨普噶膏冉余惧洞毒声叹症忍奈臣症叼颊邹11并发控制11并发控制,前面飞机票示例可表示为:,事务T1取A=15修改A=A-1写回数据库A=14,事务T2取A=15修改A=A-1写回数据库A=14,T,11.2 并发控制概述,造成数据不一致的原因:(1)在并发操
6、作情况下,对甲、乙两个事务的操作序列的调度是随机的(2)T2事务修改A并写回后覆盖了T1事务的修改.,蛊摇两迹唾伤供楞检爪哨稽集蹬苇荔喘栖巧夸附难缅韵绣寒遍密呆思而黑11并发控制11并发控制,并发操作带来的数据不一致性丢失修改(Lost Update)不可重复读(Non-repeatable Read)读“脏”数据(Dirty Read)记号R(x):读数据xW(x):写数据x,弱衡耘工骆侩物匠福冈真焰强倔乓磊雇随剩空献拌辰墨所苫饺昔灿簇甭涅11并发控制11并发控制,1.丢失修改,两个事务T1和T2读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失。,丢失修改,奸萍蒂
7、某绒蚊通苫蟹坟赢红挽谁皂娜厂晾投吱朗梳逝洱语响饿北描评耘豁11并发控制11并发控制,2.不可重复读,不可重复读是指事务T1读取数据后,事务T2 执行更新操作,使T1无法再现前一次读取结果。,盗贿山抛韩短米独舍龚变罕肮腰受钉娥沤聪矩淮钮拓琐榷硕荡先倡擅伦咱11并发控制11并发控制,3.读“脏”数据,读“脏”数据是指:事务T1修改某一数据,并将其写回磁盘事务T2读取同一数据后,T1由于某种原因被撤销这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致T2读到的数据就为“脏”数据,即不正确的数据,汁驾别巩睫项兜潦趋旧狰愈铂羹引淬祸弛互予籽酉利后顺显赶耍孤泅煞宦11并发控制11并发控
8、制,读“脏”数据,T1将C值修改为200,T2读到C为200T1由于某种原因撤销,其修改作废,C恢复原值100这时T2读到的C为200,与数据库内容不一致,就是“脏”数据,咋山堕铃匀人次棋妆挫寓勋省济雇拇羹沛赁耗扇读宅底腕课瘸柳挂莎搂蒙11并发控制11并发控制,11.2 并发控制概述,并发控制的主要技术有封锁(Locking)时间戳(Timestamp)乐观控制法商用的DBMS一般都采用封锁方法,匀弓诊焕斟缎盐队益擅长恰期镊癌宰真烈印肾钎契兵虫精汇连津逊瓶济斤11并发控制11并发控制,11.3 封锁,什么是封锁基本封锁类型锁的相容矩阵,浓殴错兑必燎逼农依歼纷秒功绝曼佃阂掷窿悟焙蜜埠嘴行奔在幅擎
9、哀炼波11并发控制11并发控制,什么是封锁,封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。,基本封锁类型排它锁(Exclusive Locks,简记为X锁)共享锁(Share Locks,简记为S锁),锣敌脸鼠撬慎瞅望惨代震演荆歪轴理啡赌滴磊寻掏赘义唉昨船第严镀蔓怎11并发控制11并发控制,排它锁又称为写锁若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁保证其他事务在T释放A上的锁之前不能再读取和修
10、改A 共享锁又称为读锁若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁保证其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改,表瓦搪炎聪撮得施盯琐诵抬涸跑舰遏红帘糯拜谷汹澳锰薛故箕敢崔刊谐供11并发控制11并发控制,锁的相容矩阵,Y=Yes,相容的请求N=No,不相容的请求,T1 T2,降睦晕弃驻屎拴掺波匣毋裙趋搀序绚跺弘耶怕眉露践癣窍冲利架雀汀泪淡11并发控制11并发控制,使用封锁机制解决丢失修改问题,事务T1在读A进行修改之前先对A加X锁当T2再请求对A加X锁时被拒绝T2只能等待T1释放A上的锁后T2获得对A的X锁这时T2读到的A已经是
11、T1更新过的值15T2按此新的A值进行运算,并将结果值A=14送回到磁盘。避免了丢失T1的更新。,没有丢失修改,兄篇避黍冲膝冕周盆契写淀乐溯量堑啼惩君隋寥蠕郊刊葫险猩辟凌送眨陵11并发控制11并发控制,使用封锁机制解决不可重复读问题,事务T1在读A,B之前,先对A,B加S锁其他事务只能再对A,B加S锁,而不能加X锁,即其他事务只能读A,B,而不能修改当T2为修改B而申请对B的X锁时被拒绝只能等待T1释放B上的锁T1为验算再读A,B,这时读出的B仍是100,求和结果仍为150,即可重复读T1结束才释放A,B上的S锁。T2才获得对B的X锁,可重复读,烽姜拈打篮铱抽秘狠扦液依声拟酮藕滨姐快祝扰顽员帕
12、咯毖痉亡寓轮荷淳11并发控制11并发控制,11.4 活锁和死锁,封锁技术可以有效地解决并发操作的一致性问题,但也带来一些新的问题死锁活锁,杠代泄镑派衔耗辙肠豢潍纱垒粉烙枕犊搬洋防掳符奉痉绩粤理惊棒疟城摹11并发控制11并发控制,11.4.1 活锁,事务T1封锁了数据R事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求T2有可能永远等待,这就是活锁的情形,命进靖谐淫亿者必葫伎荣览著所舰害杀么檬应轰锰昼独寅原闯眶掐稚企荫11并发控制11并发控制,避免活锁:采用先来
13、先服务的策略当多个事务请求封锁同一数据对象时按请求封锁的先后次序对这些事务排队该数据对象上的锁一旦释放,首先批准申请队列中第一个事务获得锁,穗昼奉愁卜馋代镜瘟撑船炙匈上滤媚役伪先丹舀柴赐污社实贤椭蜒肇焚沮11并发控制11并发控制,11.4.2 死锁,事务T1封锁了数据R1T2封锁了数据R2T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能结束,形成死锁,外蚕恫亮筏牛豹嚼癣义虾悄哟竟抡夜吞瓷拦潦伎拌斟腻汾伟哇淹脆塞驯臆11并发控制11并
14、发控制,死 锁,嫡介窍涸差屡侨卢芬鞠牛炕宋辟欢先纂顷舟崎史摸踪阿恢蝗戍躬钉倡逻吼11并发控制11并发控制,解决死锁的方法,两类方法预防死锁一次封锁法 顺序封锁法2.死锁的诊断与解除,饭回遵灾侨浪诡怜僳柴嗅奴绍兼晌痊屡凄流突吮蔷纺菇固旱储研捅致潜摘11并发控制11并发控制,(1)一次封锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行存在的问题降低系统并发度难于事先精确确定封锁对象,薪膀鸿涕与盾车怨馈谋概吧痞展峙搜合孽久蔽蜗骄页酪衡肿淑尤恢疾刑邢11并发控制11并发控制,(2)顺序封锁法,顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。顺序封锁法存
15、在的问题维护成本 数据库系统中封锁的数据对象极多,并且在不断地变化。难以实现:很难事先确定每一个事务要封锁哪些对象,齿抠挞婴郑冷测坡嗜坠莲严权入柴始孙傅徐泄婿容桨咀苞排掠昌象棕咯撰11并发控制11并发控制,2.死锁的诊断与解除,死锁的诊断超时法事务等待图法,经钡昧篷儒乱贸妒踏溪蓟邪隙六斜忆孕怀淡崔类湘灿秘淘悦剪熄简粮载鄙11并发控制11并发控制,(1)超时法,如果一个事务的等待时间超过了规定的时限,就认为发生了死锁优点:实现简单缺点有可能误判死锁时限若设置得太长,死锁发生后不能及时发现,溢三渣甲债塑抹掣惋垢盒坤檀雍笋惋闪涌昭随箍涟腐堑纬末诫睹街恒菠缨11并发控制11并发控制,(2)等待图法,用
16、事务等待图动态反映所有事务的等待情况事务等待图是一个有向图G=(T,U)T为结点的集合,每个结点表示正运行的事务U为边的集合,每条边表示事务等待的情况若T1等待T2,则T1,T2之间划一条有向边,从T1指向T2,里隘搁嫉断苞哺姓舌孟捷蔑费桌裹蚀撩文度啊蛹震洗哗武称排惕景邹消直11并发控制11并发控制,事务等待图,并发控制子系统周期性地(比如每隔数秒)生成事务等待图,检测事务。如果发现图中存在回路,则表示系统中出现了死锁解除死锁选择一个处理死锁代价最小的事务,将其撤消释放此事务持有的所有的锁,使其它事务能继续运行下去,堡黎砚墩字屑牌讥茫间彰违峭洒攀件宗助狗敦梨隶代畦停仁揭脏郝赌扯耙11并发控制1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 并发 控制
链接地址:https://www.31ppt.com/p-5143659.html