第7章 事务管理.ppt_第1页
第7章 事务管理.ppt_第2页
第7章 事务管理.ppt_第3页
第7章 事务管理.ppt_第4页
第7章 事务管理.ppt_第5页
已阅读5页,还剩24页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 事务管理,数据库原理及应用,2,前言,事务是由若干个数据操作组成的一个完整的逻辑工作单元。事务管理是数据库系统的重要的组成部分。 数据库系统在多个事务并发执行和可能出现故障的情况下,都要保证事务的正确执行。,3,7.1 事务的基本概念,7.1.1 事务的ACID性质 1 什么是事务 事务是由若干个数据操作组成的一个完整的逻辑工作单元。(可以理解为:事务是构成一个完整的逻辑工作单元的数据库操作的集合) 例如:用户购书:需要同时完成库存数减少、增加客户订单两步操作。我们要求这两个操作,要么都发生,要么都不发生。,否则就会出现书籍的库存减少而没有出现相应的订单的情况。使得信息不能够真实地反映

2、现实的情况。,4,7.1 事务的基本概念(续),2 事务的进一步描述: 事务是数据库系统的基本工作单元。是由事务开始语句和事务结束语句之间的所有的操作组成。 通常由数据操纵语言和高级编程语言所规定。,事务和程序是两个概念: 在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或整个程序。而一个应用程序通常包含多个事务。,(萨师煊:事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位),5,7.1 事务的基本概念(续),3 事务的ACID性质 为了保证数据的完整性,要求数据库系统中执行的事务具有四个性质:,原子性(Atomicity) 一致性(Con

3、sistency) 隔离性( Isolation) 持久性(Durability),就是常说得ACID性质,6,7.1 事务的基本概念(续),3 事务的ACID性质(续) 原子性:一个事务中的所有操作是一个完整的工作单元,这些操作要么都发生,要么都不发生。 一致性:一个事务单独执行时的结果,应该保持数据库的正确和完整,即数据不会因事务的执行而破坏。 一致性状态:数据库中只包含成功事务提交的结果 不一致状态:数据库中包含失败事务的结果,7,7.1 事务的基本概念(续),举例:银行转帐:从帐号A中取出一万元,存入帐号B。 定义一个事务,该事务包括两个操作 这两个操作要么全做,要么全不做 全做或者全

4、不做,数据库都处于一致性状态。 如果只做一个操作,数据库就处于不一致性状态。,T: read(A) A=A-10000 write(A) read(B) B=B+10000 write(B),书中的例子: T: read(stock_A) stock_A= stock_A-10 write(A) read(B) order_A= order_A+10 write(B),8,7.1 事务的基本概念(续),3 事务的ACID性质(续) 隔离性:在多个事务并发执行时,系统应保持执行结果与这些事务按先后次序串行执行的结果一样。 例如:对于任何一对事务Ti和Tj,在Ti看来,Tj或者在Ti开始之前已经完

5、成,或者在Ti完成之后再开始执行,这样,每个事物都察觉不到系统中有其他事务在并发执行,就好像在单用户环境中一样。,9,7.1 事务的基本概念(续),对并发控制的理解: 如果没有锁定,且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题,导致数据库中的数据的不一致性。 一个最常见的并发操作的例子是火车/飞机订票系统中的订票操作。例如,在该系统中的一个活动序列: 1、甲售票员读出某航班的机票张数余额A,设A=16; 2、乙售票员读出同一航班的机票张数余额A,也是16; 3、甲售票员卖出一张机票,修改机票张数余额A=A-1=15,把A写回数据库; 4、乙售票员也卖出一张机票

6、,修改机票张数余额A=A-1=15,把A写回数据库。 结果明明卖出两张机票,数据库中机票余额只减少1。,10,7.1 事务的基本概念(续),3 事务的ACID性质(续) 持久性:一个事务一旦成功完成后,他对数据库的改变必须是永久的,即使是发生了故障。 可以通过以下两个方法之一来实现持久性 事务所有的更新在事务结束前全部写入磁盘。 在事务结束前已写到磁盘上的相关信息,足以让数据库系统在故障出现后,重新启动系统时恢复事务已经执行的所有的更新。,11,7.1 事务的基本概念(续),7.1.3 事务的并发执行 数据库系统通常允许多个事务并发执行,其动机就如操作系统中使用多道程序设计一样。允许事务并发执

7、行的主要优点有: (1) 提高吞吐量 (2) 减少平均响应时间 现代数据库应用都要求系统具有较高的并发度,尤其是随着internet 的发展,许多web 应用要同时处理成千上万个在线的数据库访问。 硬件技术的发展也要求提高事务执行的并发度。,12,7.2-7.3 并发控制和锁,简单介绍并发控制和锁 。 1 并发控制 数据库是一个共享资源,可以供多个用户使用,允许多个系统同时使用的数据库系统,在同一时刻并行运行的事务数可达数百个。 事务可以一个一个串行执行,即每一个时刻只有一个事务运行,其他事务必须等到这个事务结束后方能运行。但是,将造成许多系统资源处于空闲状态。,因此为了充分的利用系统资源,发

8、挥数据库共享资源的特点,应该允许多个事务并行的执行。,可进一步理解为:并发控制是当多个用户同时更新数据库时,用于保护数据库完整性的各种技术。 并发机制不正确可能导致脏读、幻读和不可重复读等此类问题。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。 在某些情况下,这些措施保证了当用户和其他用户一起操作时,所得的结果和他单独操作时的结果是一样的。,13,7.2-7.3 并发控制和锁(续),事务是并发控制的基本单位,保证事务ACID特性是事务处理的重要任务。 事务特性可能遭到破坏的原因之一是多个事务对数据库的并发操作造成的。,为了保证事务的隔离性、一致性,DBMS需要对并发

9、操作进行正确的调度。,14,7.2-7.3 并发控制和锁(续),2 锁的概念: 锁是实现并发控制的一个重要的技术,也是最常用的并发控制的技术。 锁是在多用户环境中对数据访问的限制。是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。 锁的概念是:当事务对某个数据库中的资源(如表和记录)存取前,先向系统提出请求,封锁该资源,事务获得锁后,即取得对数据的控制权,在事务释放它的锁之前,其他事务不能更新此数据。当事务撤消后,释放被锁定的资源。 当一个用户锁住数据库中的某个对象时,其他用户就不能再访问该对象 。,15,7.2-7.3 并发控制和锁(续),3 研究锁的条件:1数据量大 2多个用户

10、同时并发 如果缺少这两个条件,数据库不容易产生死锁问题。研究起来可能会事倍功半。如果这两个条件都有,则会带来诸多需要引入锁的问题,比如: (1)丢失更新 (2) 脏读 (3) 不可重复读,16,7.2-7.3 并发控制和锁(续),(1)丢失更新: A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果。 (2) 脏读: A用户修改了数据时,B用户也在读该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致。 (3) 不可重复读: B用户读出该数据并修改,同时,A用户也在读取数据,此时A用户再读取数据时发现前后两次的

11、值不一致。,17,7.2-7.3 并发控制和锁(续),4 锁的分类:,(1)共享锁 (2)排他锁 (3)更新锁 (4)意向锁 (5)架构锁 (5)大容量更新锁,共享锁(S锁):如果事务T获得了一个数据项的共享锁,则T可以读但不能写该数据项。 排他锁(X锁):如果事务T获得了一个数据项的排他锁,则T既可以读又可以写该数据项。,18,7.2-7.3 并发控制和锁(续),5 关于共享锁与排他锁的说明: 共享锁与共享锁之间是相容的,既多个事务可以同时拥有同一个数据项的共享锁,因为读操作之间没有冲突。 排他锁与共享锁、排他锁与排他锁之间是不相容的,对于一个数据项,只要有一个事务拥有排他锁,则此时其他事物

12、不能同时拥有共享锁或排他锁,因为写操作与读或写操作都是冲突的。,19,7.2-7.3 并发控制和锁(续),6 死锁: 在系统中,如果存在一个事务的集合T1,T2,.Tn,n=2,其中T1在等待T2释放锁, Tn-1在等待Tn释放锁, Tn在等待T1释放锁,这样就形成了一个循环等待,没有哪个事务可以继续执行,这种情形称为死锁。,20,7.4 数据库的恢复,1 故障的不可避免性 (1) 故障是不可避免的 计算机硬件故障 系统软件和应用软件的错误 操作员的失误 恶意的破坏 (2) 故障的影响 运行事务非正常中断 破坏数据库,21,7.4 数据库的恢复(续),2 常见的存储介质 数据库中数据可以在不同

13、的存储介质上保存并被访问,目前常见的两种类型的存储介质: 挥发性介质:一般指内存等,在系统发生故障时,其存储的数据会立即丢失。 持久性介质:一般在系统发生故障时不会被破坏和丢失,但是,如果其本身故障,则为后果最为严重的故障。,22,7.4 数据库的恢复(续),4 数据库故障的类型 数据库系统的故障一般可以分为以下几种类型: (1) 事务故障:某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了。事务故障的常见原因: 输入数据有误 运算溢出 违反了某些完整性限制 某些应用程序出错 并行事务发生死锁,事务故障的处理 向用户报告错误,重启事务。,23,7.4 数据库的恢复(续),(2) 什么是

14、系统故障 整个系统的正常运行突然被破坏 所有正在运行的事务都非正常终止 内存中数据库缓冲区的信息全部丢失,系统故障的处理方法 对未完成的事务作回滚处理,而对已提交的事务进行重作。,24,7.4 数据库的恢复(续),(3)介质故障 硬件故障使存储在外存中的数据部分丢失或全部丢失介质故障比前两类故障的可能性小得多,但破坏性大得多。主要包括: 磁盘损坏 磁头碰撞 操作系统的某种潜在错误 瞬时强磁场干扰,介质故障的处理 装入数据库发生介质故障前某个时刻的数据副本 重做自此时开始的所有成功的事务,将这些事务已提交的结果重新记入数据库,25,7.4 数据库的恢复(续),5 备份与介质故障恢复 (1) 数据

15、备份是介质故障恢复最常见的方法。 它周期性地将整个数据库的内容复制到稳定的存储器上,这些备份的数据称为备份副本。,一旦发生介质故障,就可以利用最后一次的备份副本,将数据库恢复到备份时的一致状态。然后系统再利用日志重做最后一次备份之后提交的所有事务。将数据库恢复到发生故障前的一致状态。,26,7.4 数据库的恢复(续),(2)常见的备份方法 静态备份:要求在备份操作开始之前数据库中没有活跃的事务,在备份的过程中不允许对数据库有任何更新活动。 动态备份:是指备份过程中允许对数据库进行更新,即备份和用户事务可以并发执行。 完全备份:是指复制全部数据库的内容, 增量备份:是指只复制自上次备份之后更新过的数据 。,27,7.4 数据库的恢复(续),6 灾难恢复与高可用性 随着数据库应用的不断发展,数据库的地位越来越重要,有的系统对数据库提出了高可用性的要求,即数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论