[工学]事务处理技术.ppt

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]事务处理技术

事务处理技术 事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。(一个存取或更改数据库的程序的运行) 事务处理技术 1、并发控制技术:用来控制多个事务的并行 运行,避免它们之间的相互干扰,保证每 个事务都产生正确的结果。 2、数据库恢复技术:用来进行系统失败后的 恢复处理,确保数据库能够恢复到正确的 状态。 事务的概念 背景知识 1、古老而典型的例子 提起事务,就会用到银行中两个账户之间转 帐的例子,即从账户A转X元到帐户B,它同时 涉及到两个不同帐户的读写操作。 2、事务中涉及数据库访问的基本操作 ⑴read(X):从数据库传送数据项X到执行read操作的事务的一个局部缓冲区中; ⑵write(X):从执行write事务的局部缓冲区中把数据项X传回数据库。 3、事务之间的相互影响 数据库系统中同时可能有很多事务要执行,这些事务要么互不相干,要么要访问相同的数据项。对于那些要访问相同数据项的事务之间的相互影响要特别处理。 Ti: 假设A的初始值为2000, Tj read(A) B的初始值为3000。 read(A) A:=A-500 read(B) write(A) X:=A+B read(B) write(X) B:=B+500 write(B) 事务之间的相互影响 如图所示。事务Ti是从A帐户转500元钱到B帐户,事务Tj是计算帐户A和账户B的和。两个事务同时在系统中执行,那么事务Tj的read(A)操作可能在事务Ti的write(A)之前或之后执行;同理,事务Tj的read(B)操作也可能在事务Ti的write(B)之前或之后执行。如果事务Tj的read(A)操作在事务Ti的write(A)之前执行,而事务Tj的read(B)操作却在事务Ti的write(B)之后执行,那么事务Tj的计算结果是5500,而不是想象中的5000,凭空就多了500元钱。 事务的状态 一个事务必须处于如下状态之一: 活动状态 部分提交状态 失败状态 异常结束状态 提交状态 我们可以在事务中执行如下的操作来实现事务状态的转换: (1)BEGIN-TRANSACTION开始运行事务,使事务进入活动状态 (2)END-TRANSACTION说明事务中的所有读写操作都已完成,使事务进入部分提交状态,把事务的所有操作对数据库的影响存入数据库 (3)COMMIT-TRANSACTION标志事务已经成功地完成,事务进入提交状态,结束事务的运行 (4)ABOUT-TRANSACTION标志事务进入失败状态,系统消除事务中所有操作对数据库和其他事务的影响,结束事务的运行 除了上述操作外,有些数据库恢复技术还要求如下操作: (1)UNDO消除事务中指定数据操作对数据库的影响 (2)REDO重新执行事务中指定数据库操作,保证该操作对数据库的影响能够安全地存入数据库 事务的特性 需要由数据库管理系统的并发控制和数据库恢复机制来保证。 原子性 事务是数据库系统运行的原子程序单元。每个事务的所有操作要么被全部成功地执行,要么一个也不被执行。 数据库正确保持性 一个事务的正确执行必须把数据库从一个正确状态转换为另一个正确状态。 操作结果永久保持性 如果一个事务使数据库发生了改变,而且该事务已经进入提交状态,则这些改变将不会因以后的失败而丢失。 独立性 一个事务在进入提交状态之前,它对数据库的更新不可由其他事务读取。这个性质避免了临时值问题,也避免了嵌套回滚处理问题。一般地,不同的并发控制和数据库恢复方法要求不同级别的独立性。 可串行性 并发运行的多个事务的运行效果与这些事务按某种次序顺序运行的效要相同。可串行性是各种并发控制方法所要求的关键性质。 保证事务的原子性是数据库恢复机制的责任。 数据库正确保持性 简单地说就是数据库中数据的完整性,包括它们的正确性。 对于图中的事务Ti来说,一致性要求就是事务的执行不改变账户A和账户B的和。否则的话事务就会创造或销毁钱! 单个事务的一致性是由对该事务进行编码的应用程序员的责任,但是在某些情况下利用DBMS中完整性约束(如触发器)的自动检查功能有助于一致性的维护。 Ti: Ti: read(A) read(A)

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档