数据库系统原理与应用教程(第二版) 教学课件 作者 7 302 0815 6 ch13.pptVIP

数据库系统原理与应用教程(第二版) 教学课件 作者 7 302 0815 6 ch13.ppt

  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文档。上传文档
查看更多
第13章 事务和并发控制 本章概述 无论用户对数据库中的数据如何操作,数据库中的数据都应该保证一致的、稳定的状态。例如,当我们使用一条语句修改关系Book中的所有图书的价格数据时,我们希望这种修改要么全部完成,要么全部都不做,而不能出现一部分图书的价格修改了,而另外一部分图书的价格没有修改。一个数据库中的数据,经常会有许多用户同时操纵同一个数据,但是数据库管理系统要保证这些用户的操作互相不影响,并且都能得到正确的结果。要实现这些要求,就得依靠事务和并发控制技术。 本章将首先介绍事务和并发控制技术的基本概念,然后以Microsoft SQL Server系统为例,研究事务和并发控制技术在数据库产品中的具体实现。 本章的学习目标 理解和掌握事务的概念、特性和基本状态; 理解和掌握事务的基本实现原理; 理解并发操作存在的问题; 理解和掌握锁的类型和作用; 了解Microsoft SQL Server系统中事务和并发控制的应用。 主要内容 13.1 事务 13.2 并发控制 13.3 Microsoft SQL Server系统的事务和锁 13.4 本章小结 13.1 事务 下面,我们主要介绍事务的基本概念、特性、状态变迁图、事务的并发执行以及事务的一致性级别等内容。 事务的基本概念 无论是从系统设计人员的角度,还是从用户的角度,事务都是一个单元的操作,这些操作要么全部成功,要么全部失败。事务是数据库环境中的逻辑工作单元,相当于操作系统中的进程的概念。 事务可以是隐含的,也可以是定义的。在许多数据库的操作中,一个命令的执行,例如UPDATE语句就是一个完整的事务。在应用程序中,事务也可以由用户使用语句定义,例如BEGIN TRANSACTION语句表示事务的开始,而END TRANSACTION语句表示事务的结束。 为了保证数据库中的数据总是正确的,一个事务应该具有ACID属性,A表示原子性(Atomicity),C表示一致性(Consistency),I表示独立性(Isolation),D表示持久性(Durability)。事务的ACID特性和事务的关系可以使用图13-1来示意表示。 事务的状态变迁图 事务的并发执行 事务中的语句可以分成两类,一类是I/O活动,执行的时间是毫秒级,另一类是CPU的活动,其执行时间是微妙级。在计算机系统中,这两类活动的速度不一样,因此对磁盘的操作和CPU的操作可以并发执行。 如果多个事务按照顺序执行,那么效率比较低。但是,如果多个事务并发执行,就可以提高总的效率。事务的执行次序称为调度。如果多个事务依次执行,则称该事务为串行调度。如果利用分时的方法同时处理多个事务,则称该事务为并发调度。 事务的一致性级别 在SQL语句中,提供了事务一致性的四个等级供用户选择。这四个一致性等级从高到低依次是可串行化(serializable)、可重复读(repeatable)、读提交数据(read committed)和可以读未提交数据(read uncommitted)。 可串行化级别允许事务与其他事务并发执行,但是系统必须保证调度是可串行化的,不会发生错误。这是最高级别的一致性,也是系统默认的一致性级别。 可重复读就是只允许事务读已提交的数据,且在两次读同一数据时不允许其他事务修改此数据,但是允许该事务与其他事务的并发调度不是可串行化的。 读提交数据就是允许事务读已经提交的数据,但未必要求可重复读。也就是说,它允许一个事务的两次请求可能得到不同的结果,只要这些数据是已经提交的即可。 可以读未提交数据就是允许事务读已提交或未提交的数据,这是一致性等级最低的事务。 13.2 并发控制 前面讲过,事务可以并发执行。由于并发事务之间的相互干扰,有可能破坏事务的独立性,于是会造成丢失修改等问题。 本节将要介绍并发操作可能带来的问题以及如何使用锁来解决这些问题。 并发操作带来的问题 并发操作带来的问题是丢失修改、脏读、不可重复读和幻觉读。 丢失修改就是指当一个事务修改了数据,并且这种修改还没有提交到数据库中时,另外一个事务又对同样的数据进行了修改,并且把这种修改提交到了数据库中。 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据,那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,第一个事务两次读到的的数据可能是不一样的。 幻觉读是指当事务不是独立执行时发生的一种现象,例如,第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档