网站大量收购独家精品文档,联系QQ:2885784924

第6章 事务管理 数据库技术知识基础课件.ppt

第6章 事务管理 数据库技术知识基础课件.ppt

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

数据库技术基础;第6章 事务管理;6.1 学习目标;第6章 事务管理;6.2 事务的概念;定义事务的开始 自动提交事务:每条单独的语句都是一个事务,语句执行成功则提交,否则就回滚事务。这是SQL Server的默认工作方式。 显式事务:每个事务均以 BEGIN TRANSACTION 语句显式开始,以COMMIT 或 ROLLBACK 语句显式结束。 隐性事务:在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句显式完成。SET IMPLICIT_TRANSACTIONS ON命令使SQL Server启用隐性事务模式,SET IMPLICIT_TRANSACTIONS OFF 将SQL Server恢复成自动提交事务模式。 一般情况下,一条DDL语句(例如CREATE TABLE)和DCL语句(GRANT)构成一个事务。 ;定义事务的结束 提交语句 格式:COMMIT [WORK] 功能:表示一个事务的正常结束。该语句成功执行后,DBMS将事务对数据库的操作保存到数据库中。 撤销语句(回滚语句) 格式:ROLLBACK [WORK] 功能:表示一个事务的非正常结束。该语句执行后,DBMS将撤销事务对数据库的所有操作,把数据库恢复到事务执行前的状态。;6.2.2事务的特性;第6章 事务管理;6.3 恢复技术;6.3.1 故障种类;事务故障 事务在运行过程中,如果出现运算溢出,违反了某些完整性规则,某些应用程序的错误,或并发事务发生死锁等,使事务不能继续执行下去。 系统故障 系统在运行过程中,由于某种原因,如操作系统或DBMS代码错误,操作员操作失误、特定类型的硬件错误(如CPU故障)、突然停电等造成系统停止运行,丢失了系统缓冲区中的数据,而存储在磁盘中的数据未受到影响。;介质故障 系统在运行过程中,由于某种硬件故障,如磁盘坏损,磁头碰撞、或由于操作系统的某种潜在的错误、瞬时强磁场干扰,使存储在外存上的数据部分损失或全部损失。;6.3.2 应对措施;T1;登记日志文件 日志文件为数据库的数据建立了副本(冗余),为了保证数据库数据的可恢复性,必须坚持先写日志,后写数据的原则。;数据库备份 制做备份的过程称为转储。 转储可以分为增量转储和海量转储。 海量转储是指每次转储全部数据。 增量转储是指每次转储上次转储后修改过的数据。 转储还可分为静态转储和动态转储。 静态转储是指系???停止对外服务,不允许用户运行事务,只进行转储操作。 动态转储是指转储期间允许用户对数据库进行存取操作,即转储和用户事务可以并发执行。;6.3.3 恢复过程;6.3.3 恢复过程(续);第6章 事务管理;6.4 并发控制;调度 就是对到达调度程序的读写操作重新安排它们的执行次序,而不是先来先服务。;6.4.1并发带来的问题;(1) 并发执行一 执行过程如图6.6(a)所示,操作按照从上往下的次序执行。执行的结果是账户A的余额是210元,账户B的余额是1100。 如果先执行T1,再执行T2,或者先执行T2,再执行T1,最终账户A的余额是210,账户B的余额是1050。 事务T2虽然执行了从账户B减少50元的操作,但它并没有发挥其作用。这种现象称为“丢失更新”。;(2) 并发执行二 执行过程如图6.6(b)所示。在本次执行中事务T2更新了账户B,之后由于某种原因被撤销,只有T1完成了所有操作,因此,正确的结果应该是账户A的余额是160,账户B的余额是1100。 执行结果是账户A的余额为160,账户B的余额是1050。出错的原因在于T1读了T2撤销前的中间执行结果950元,并在这个结果上增加了100元。这种现象叫做“读脏数据”。;(3) 并发执行三 执行过程如图6.6(c)所示。T1在执行过程中读了两次账户B,但是发现B的两次余额不一样,由于不知道发生了什么情况而将T1撤销了。在这次执行中事务T1第一次读账户B的余额为1000元,第二次读的余额为950元,对同一个数据两次读的结果不一样,原因是在两个读操作中间执行了另外的事务T2。这种现象叫做“不可重复读”。;[例6.3] 假设账户A、B和C的初始余额分别是260元、1000元和300元。有三个转账事务,事务T1从账户A转账100元到账户B,事务T2从账户B转账50元到账户A,事务T3从账户A转账60元到账户C。三个事务可以表示为: T1=R1(A)W1(A)R1(B)W1(B) T2=R2(B)W2(B)R2(A)W2(A) T3=R3(A)W3(A)R3(C)W3(C) 三个事务如果串行执行,别执行结果使账户A、B和C的余额分别为150元、1

文档评论(0)

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

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

1亿VIP精品文档

相关文档