第11章 并发控制[精选].pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 并发控制[精选]

下面,介绍事务的特征,我们经常也把事物的特征称为事物的ACID原则,这四个字母分别代表着事物的四个特征: 原子性:指的是整体性,即… 一致性:..。一个数据库本来应该是处于一种一致性状态,我们通常也把它叫做正确的状态。如果在你的事务执行前数据库是正确的 ,那么在你的事务执行后,数据库也应该是正确的,如果你的事务执行后数据库不正确了,那我们就说这个事务有问题。比如,刚才的第二个例子,我们发现这个事务就有问题,事务执行完毕后,系统莫名其妙的少了1万元,数据库不正确了,他处于一种不一致状态,所以这个事务就有问题。我们说,事务应该满足一致性。 隔离性:…。一个事务所包含的数据或者对数据的操作不能受其它的、并行事务的干扰,它的执行应该自己独立执行一样。在并行执行的事务之间,一个事务不能干扰另一个事务。 持久性:…。前面我们已经提到了提交操作,一个事务一旦提交,系统就会执行这个事务,那么它所做的修改也好更新也罢,对数据库影响应该是永久的,不会因为你系统的原因使得这个修改或更新消失。 对于这个概念,一些小的数据库系统比如dos下的数据库系统就存在这个问题,我们修改了数据库,但是突然断电了,数据库断了,这时我们实际上更新的是内存,因为数据库在内存中有个映像,而这种更新并没有及时的反映到物理磁盘即硬盘当中去。所以系统一旦断电,我们就说系统内存当中的数据就丢了就是这个原因。此时,内存的数据和数据库中的数据是不一致的,我们说事务的运行就没有使得数据反映到数据库中去。 而目前的大型数据库系统都支持这个概念,它要求你事务的运行,不会因为你修改的是内存或硬盘而发生改变,只要事务提交了,它都会起作用。这就是所谓的持久性。 好,我们知道了事务的并发主要是为了提高效率,但是,同时它也带来了一定问题。比如刚才我们所说的医生看病,他为了提高效率,会启动很多看病过程,这个时候就容易出错了。假如启动的人数太多了,他都不清楚这些人的病情了,可能会忘了,记不住了。同样,在数据库系统中并发操作也会有同样的问题,可以归结为三个方面,下面……前面第一个例子就是订飞机票的例子就是这种情况,甲乙两个售票点各卖出一张票,结果是数据库只记住了乙售票点的卖票行为,而甲售票点的卖票结果却丢失了。 我们也把事物T2读取的数据称作脏数据。 * 事务T1在第一个时刻读取了数据R,在第二个时刻事务T2读取并修改了数据R,接下来,在下一个时刻当事务T1再次读取数据R,也就是说事务T1在两个不同的时刻读取了两次R,在这中间R被事务T2修改了一次,使得t1读取的两次值不一样。我们把这种现象叫不可重读。 好,刚才介绍了并发操作所带来的三个问题,而造成这些问题的根本原因就在于,并发操作破坏了事务的隔离性。 所谓隔离性就是事务和事务之间不能相互干扰,刚才这三个问题都是因为事务间发生了相互干扰。 那如何解决并发操作所带来的问题呢? 在我们的DBMS种经常采用的方法就是并发控制,所谓的并发控制.. …,现在我们常用的数据库管理系统比如sqlserver,oracle等等,都提供并发控制的功能,而不提供并发控制功能的系统我们说是非多用户的系统,不支持并行操作,所以效率会很低。 提问:…… 分析:造成三种数据不一致的原因是,说白了就是我在写的时候,你也在写,这不对;同样,我在读的时候你在写,那么我看到的数据能有用吗。 ;再有,我在写的时候你在读也不行,你要是看得等到我写完之后你再看。 有了这个提示,有的同学可能就会想到我们日常生活中经常用到的一个东西——锁!! 我在操作数据前,先上一把锁,这样只有我能使用它,就不会受到别人的干扰了。 下面,介绍第三部分的内容——封锁。 所谓封锁就是当一个事务在对某个数据对象进行操作之前,必须获得相应的锁,这个锁其中就相当于对数据的使用权,你必须首先获得使用权才能使用,否则不行。以保证数据操作的正确性和一致性。这就是封锁的概念 封锁是我们数据库系统进行并发控制的最主要的手段,他的基本思想就是对我们的数据对象加一把锁。我在使用数据库中某个数据对象前,先申请获得一把锁,把它锁住,别人不能用。我使用完以后,把锁打开,别人才能用。这样就可以避免不同事务之间对数据的相互干扰。 封锁的类型:…… 为了直观的描述两种锁之间的关系。下面介绍锁相容矩阵。 锁相容矩阵给出了当事务T1获得某数据上的锁后,事务T2欲申请该数据上的某个锁时,是否被批准的规则。 刚才我们已经介绍过了,X锁是排他锁,S锁是共享锁。 第一行告诉我们,T1加上排他锁后,T2既不能加排他锁也不能加共享锁; 第二行告诉我们,T1加上共享锁后,T2只能加共享锁而不能加排他锁。 最后一行说明的是如果一个数据没有被加任何锁,那既可以加排他锁也可以加共享锁。 锁相容矩阵是后面学习的基础, 它告诉我们:一个数据被加排他

文档评论(0)

dart004 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档