- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                第9章 网络数据管理 9.1 网络数据库的并发控制 9.1.1 事务 并发控制是指在网络环境下对数据库的并发操作进行规范的机制。  并发控制的作用主要是协调同一时间访问同一数据库文件的多个事务之间的关系,防止这些事务之间发生冲突。 事务(transaction)是数据库的逻辑工作单元,它是一组对数据的操作序列。事务是并发控制的基本单位。 事务具有以下四个基本特性:   原子性   一致性   隔离性   持续性 9.1.2 并发控制的必要性       数据库并发操作导致数据不一致性的三种情况:  1. 丢失更新       当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的丢失更新(lost update)问题,导致数据的不一致。它是由于两个事务对同一数据并发写入引起的,称为写-写冲突。 9.1.2 并发控制的必要性 2. 脏读        事务T2读取了T1更新后的数据R,其后T1由于某种原因撤销修改,数据R恢复原值,导致T2得到的数据与数据库的内容不一致。这种由于一个事务读取另一个更新事务尚未提交的数据引起的不一致问题,被称为脏读(dirty read)。 3. 不可重读        事务T1读取数据R后,T2读取并更新了R,当T1再次读取R时,得到的两次读取值不一致,这种现象被称为不可重读(unrepeatable read)。 9.1.3 基于锁的并发控制技术 基于锁的并发控制是事务对数据操作前必须获得对该数据的锁,完成操作后在适当时候释放锁,而得不到锁的事务处于等待状态。     锁是数据项上的并发控制标志,它有两种类型:   共享锁(Shared Lock,简称S锁)   排它锁(Exclusive Lock,简称X锁) 9.1.3 基于锁的并发控制技术 1. 封锁协议        系统中的事务在加锁和释放锁时,都必须遵守一组规则,这组规则称为封锁协议。   一级封锁协议        一级封锁协议是事务在修改数据R之前必须对其加X锁,直到事务结束,如果未能获得X锁,则该事务进入等待状态,直至获得X锁才能执行。   二级封锁协议        二级封锁协议是在一级封锁协议的基础上,规定事务在读取数据R之前必须对其加S锁,读完后释放S锁。 9.1.3 基于锁的并发控制技术   三级封锁协议        三级封锁协议是在一级封锁协议的基础上,规定事务在读取数据R之前必须对其加S锁,读完后并不释放S锁,直到整个事务结束后才释放。 2. 封锁粒度        封锁粒度是指封锁的数据对象的大小。        封锁粒度与系统的并发度和并发控制的开销密切相关。封锁粒度越小,并发度越高,并发控制的系统开销也就越大。反之,封锁粒度越大,并发度越低,并发控制的系统开销也就越小。 9.1.3 基于锁的并发控制技术 3. 死锁        如果一个事务申请锁未成功,则须等待其它事务释放锁,这就形成了事务之间的等待关系。当事务中出现循环等待时,如果不加干预,就会一直等待下去,这种状态称为死锁。 (1)死锁的检测和处理        死锁检测的方法一般有以下两种:   超时法   等待图法 9.1.3 基于锁的并发控制技术 数据库管理系统对死锁一般采用如下策略:   在循环等待的事务中,选择一个事务作为牺牲者,给其他事务“让路”。   回滚牺牲的事务,释放其获得的锁即其他资源。   将释放的锁让给等待它的事务。 选取牺牲事务的方法有以下几种:   选择最迟交付的事务作为牺牲者。   选择获得锁最少的事务作为牺牲者。   选择回滚代价最小的事务作为牺牲者。 9.1.3 基于锁的并发控制技术 (2)死锁的预防        数据库系统中预防死锁常用的方法有以下两种:   一次加锁法       一次加锁法是在事务执行前,对要使用的所有数据对象一次加锁并要求加锁成功,只要一个加锁不成功,即表示本次加锁失败,立即释放所有加锁成功的数据对象,然后重新开始加锁。   顺序加锁法       顺序加锁法是对所有可能封锁的数据对象按序编号,规定一个加锁顺序,每个事务都按此顺序加锁,释放时则按逆序进行。 9.1.4 其它并发控制技术 1. 基于时间戳的并发控制技术        为了区别事务开始执行的先后,每个事务在开始执行时,都由系统赋予一个唯一的、随时间增长的整数,称为时间戳(TS,Time Stamp)。        基于时间戳的并发控制是按时间戳的顺序对冲突进行处理,使一组事务的交叉执行等价于一个由时间戳确定的串行序列,其目的是保证冲突的读操作和写操作按照时间戳的顺序执行。  9.1.4 其它并发控制技术        基于时间戳的并发控制遵循以下准则: 事务开始时,赋予事务一个
                
原创力文档
                        

文档评论(0)