事务(transaction).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文档。上传文档
查看更多
7.3.1 事务 事务(transaction) 事务是数据库的逻辑工作单位,由用户定义的一个组数据库操作序列组成,序列中的操作要么全做要么全不做。 该操作命令序列是一个不可分割的工作单位。一个事务可以是一条SQL语句、一组SQL语句或为此编写的整个程序。 事务的例子 银行转帐:A帐户转帐到B帐户100元。该处理包括了两个更新步骤: A=A-100 B=B+100 这两个操作是不可分的:要么都做,要么都不作。 在DBMS中提供事务管理的部件称为事务管理器(transaction manager)。事务管理器保证每个事务执行前后的数据库状态都是一致的。 7.3.1.1 事务的基本控制操作 事务开始:BEGIN TRANSACTION 事务提交:COMMIT TRANSACTION 告诉事务管理器事务中的所有操作都已完成,将所有对数据库的更新写回到物理数据库中,事物正常结束,数据库又处于一个新的一致状态; COMMIT操作为事务建立了一个提交点(COMMIT POINT)。 事务回退:ROLLBACK TRANSACTION 告诉事务管理器事务执行时发生故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始的壮态。 7.3.1.2 事务的特征ACID 原子性(Atomicity) 事务是不可分的原子,其中的操作要么都做,要么都不做。 一致性(Consistency) 事务的执行保证数据库从一个一致状态转到另一个一致状态,即数据不会应事务的执行而导致不一致,但一个事务的内部无须一致。 隔离性(Isolation) 多个事务一起执行时相互独立,任一事务的执行结果直到其成功提交后才对其它事务可见。多个事务并发执行与这些事务单独顺序执行的结果相同。 持续性(Durability) 事务一旦成功提交,就在数据库永久保存,关机后依然存在。 事务的4个特征一般统称为事务的ACID性质。DBMS中的任一事务都由事务管理器保证了ACID。 事务在ACID特性可能遭到破坏的因素: 多个事务并行运行时,不同事务的操作交差执行; 事务在运行过程中备强行停止。 7.3.1.3 事务的ACID性质举例 T1事务: 从A帐户中转帐100元到B帐户中 T2事务:从A帐户中取100元 7.3.2 数据库并发控制 并发控制就是要求DBMS提供并发控制功能来合理调度并发事务,避免并发事务之间的互相干扰造成数据的不一致性。 7.3.2.1 数据库并发控制概述 数据库系统允许多个用户同时存取数据库。 并发操作 在多用户DBS中,如果多个用户同时对同一数据进行操作称为并发操作。 并发操作使多个事务之间可能产生相互干扰,破坏事务的隔离性(Isolation)。并发操作通常会引起三类问题: 丢失更新 脏读 不一致分析 DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的一致性,避免产生不正确的数据 数据库并发操作实例——丢失修改 丢失修改 甲、乙两个事务读同一数据并进行更新,乙事务的修改结果破坏了甲的更新结果。 例如: 并发取存款操作。假设存款余额X=1000元,甲事务取走存款300元,乙事务取走存款200元,存款余额更新后应是X=500元。倘若甲事务执行完毕之后再执行乙事务则可队得到正确的结果。倘若甲、乙事务并行,按如图3所示的序列交叉执行,将会出现错误结果。 事务甲 读x 更新x:=x-300 时间T t1 t2 t3 t4 t5 事务乙 读x 更新x:=x-200 数据库并发操作实例——读“脏”数据 读“脏”数据 事务甲更新了数据x,事务乙读了甲更新后的数据x,事务甲由于某种原因被撤消,修改无效,数据x恢复原值。事务乙得到的数据与数据库内容不一致。 数据库并发操作实例——读过时数据 读过时数据 事务甲读取数据x,事务乙读取并更新了数据x,事务甲再次读取x以进行校核,得到的两次读取值不一致。 并发操作的调度 并行事务正确性的唯一准则是可串行性。 可串行性 几个事务的并行执行时的结果与串行地执行它们时的结果相同。则表示该并发事务是可串行性。 不可串行性 问题如何解决 一种方法:让所有事务一个一个地串行执行 一个事务在执行时其它事务只能等待 不能充分利用系统资源,效率低下 另一种方法:采用封锁技术,允许事务并发执行。 但必须保证事务并发执行的正确性 必须用正确的方法调度执行事务的并发操作 7.3.3 封锁 1. 封锁 所谓封锁就是事务T在对某

文档评论(0)

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

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

1亿VIP精品文档

相关文档