545-掌握事务的基本概念及特性 .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文档。上传文档
查看更多
10.1 事务的基本概念 10.2 数据库恢复概述 10.3 故障的种类 10.4 恢复的实现技术 10.5 恢复策略 10.6 具有检查点的恢复技术 10.7 数据库镜像 10.8 小结 10.1 事务的基本概念 10.1.1 事务的定义 1.什么是事务 事务是由用户定义的一组操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位,是恢复和并发控制的基本单位. 是一种机制,它确保多个SQL语句被当作单个工作单元来处理 2 .事务和程序是两个概念 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序 一个应用程序通常包含多个事务 3 .定义事务 隐式方式 当用户没有显式地定义事务时, DBMS按缺省规定自动划分事务 显式定义方式 事务的开始与结束由用户显式控制。定义事务的语句有三条: BEGIN TRANSACTION SQL 语句 …….. COMMIT ROLLBACK BEGIN TRANSACTION表示事务的开始; COMMIT表示事务的提交 (事务正常结束 提交事务的所有操作(读+更新),事务中所有对数据库的更新写回到磁盘上的物理数据库中去, 事务中所有对数据库的更新永久生效) 10.1.2 事务的特征 事务是由有限的数据库操作序列组成,但并不是任意的数据库操作序列都能成为事务,为了保护数据的完整性,一般要求事务具有以下四个特征:原子性 一致性 隔离性 持久性 ACID准则 1.原子性(Atomic) 一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(nothing or all)的原则,即不允许事务部分的完成。 如果事务因故障没有完成,则该事务已做的操作认为是无效的,在恢复时必须取消该事务对数据库的影响 保证原子性的思路:对于要执行写操作的数据项,在磁盘上记录其旧值,若事务没能完成执行,旧值将被恢复,好像事务从未执行 保证原子性是DBMS本身的责任,由“事务管理部件”处理。 2.一致性(Consistency) 事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。 所谓数据库的一致状态是指数据库中的数据满足完整性约束。 例如,银行企业中,“从帐号A转移资金额R到帐号B”是一个典型的事务,这个事务包括两个操作,从帐号A中减去资金额R和在帐号B中增加资金额R。 定义一个事务,该事务包括两个操作 这两个操作要么全做,要么全不做 全做或者全不做,数据库都处于一致性状态。 如果只做一个操作,数据库就处于不一致性状态。 可见事务的一致性与原子性是密切相关的。 确保单个事务的一致性是对该事务编码的应用,程序员的责任。 3.隔离性(Isolation) 一个事务的执行不能被其它事务干扰。 如果多个事务并发地执行,应像各个事务独立执行一样。事务并发执行的结果和某一串行执行的结果相同。 事务并发执行的相对独立性,这是事务并发控制的目标。 并发控制就是为了保证事务间的隔离性 隔离性保证:多个事务并发执行的结果和某一串行执行的结果相同 T1的修改被T2覆盖了! 4.持久性(Durability) 指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS也应该能够恢复。 事务上述四个性质的英文术语的第一个字母为ACID。因此,这四个性质以称为事务的ACID准则。 下面是一个事务的例子,从帐号A转移资金额R到帐号B: BEGIN TRANSACTION READ A A←A-R IF A0    /* A 款不足*/ THEN BEGIN DISPLAY “A款不足”       ROLLBACK END ELSE /* 拨款 */ BEGIN B←B+R DISPLAY “拨款完成” COMMIT END 这是对一个简单事务的完整的描述。 该事务有两个出口: 当A 帐号的款项不足时,事务以ROLLBACK(撤销)命令结束,即撤销该事务的影响; 另一个出口是以COMMIT(提交)命令结束,完成从帐号A到帐号B的拨款。 在COMMIT之前,即在数据库修改过程中,数据可能是不一致的,事务本身也可能被撤销。 只有在COMMIT之后,事务对数据库所产生的变化才对其他事务开放,这就可以避免其他事务访问不一致或不存在的数据。 事务的ACID特性可能遭到破坏的因素有: 1、多个事务并发运行,

文档评论(0)

小玉儿 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档