[理学]数据库原理.pptVIP

  1. 1、本文档共91页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[理学]数据库原理

第六章 数据库保护 第六章 数据库保护 6.1. 事务的概念及特性 6.2. 事务并发控制 6.3. 数据库恢复 6.4. 小结 事务的概念 事务(Transaction): 是访问并可能更新各种数据项的一个程序执行单元。 多个事务可以并行执行 一个事务的执行必须保证数据库的一致性 在事务执行过程中允许暂时的不一致 当事务成功执行后,数据库必须是一致的 当事务成功提交后,对数据库的改变应该是持久的,即使以后系统出现故障 事务的概念 事务(Transaction): 是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务和程序是不同的概念 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句; 一个应用程序通常包含多个事务。 事务的特性 数据库系统需要维护事务的以下性质: 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 事务的所有操作在数据库中要么全部正确反映,要么全部不反映 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 一个事务的执行不能被其他事务干扰。即使事务并发也要感觉不到其它事务的存在 一个事务成功完成后,它对数据库的改变是永久性的。 事务的状态转换图 事务的状态 活动状态:事务开始执行后即进入此状态,写操作将数据写入系统的缓冲区; 局部提交状态:事务最后一个操作结束后转入局部提交态; 提交状态:在局部提交态下,并发控制程序检查事务是否与其它并发事务之间产生错误,如果不会,及执行提交,进入提交状态,把数据库的更新写入磁盘,并向系统放回事务成功结束的信息; 失败状态:处于活动态的事务如果没有执行完最后一个操作便被中止或在局部提交态下系统故障被中止,进入此状态。系统将执行回退操作,进入异常终止态。 异常中止态:回退操作的执行结果将处于失败态的事务对数据库的更新予以撤销,保证事务的原子性。 如何定义事务 在 MS SQL Server 中,启动事务 有三种模式 显式事务:通过发出 BEGIN TRANSACTION 语句显式启动事务。 自动提交事务: SQL Server 的默认模式。 隐性事务:通过 API 函数或 Transact-SQL SET MPLICIT_TRANSACTIONS ON 语句,将隐性事务模式设置为打开。 在SQL中定义事务的结束 COMMIT [work/transaction] ROLLBACK [work/transaction] 显示定义 COMMIT [work] 事务正常结束 提交事务的所有操作(读+更新) 事务中所有对数据库的更新永久生效 ROLLBACK [work] 事务异常终止 事务运行的过程中发生了故障,不能继续执行 回滚事务的所有更新操作 事务滚回到开始时的状态 事务定义的例子 BEGIN TRANSACTION 读账户甲的余额至变量BALANCE BALANCE=BALANCE-AMOUNT(AMOUNT为转账金额) IF (BALANCE0) THEN {显示‘金额不足,不能转账’; ROLLBACK; (撤销该事务)} ELSE {将BALANCE的值写回到账户甲; 读账户乙的余额至变量BALANCE1 BALANCE1=BALANCE1+AMOUNT 将BALANCE1的值写回到账户乙; COMMIT;} 例子:事务及其性质 问题:设银行数据库中有一转账事务T,从账号A转50元到账号B。 相应的事务: 1. read(A) 2. A := A – 50 3. write(A) 4. read(B) 5. B := B + 50 6. write(B) 一致性(A+B的值不变) 原子性(A,B同时被修改或同时保持原值) 隔离性 持久性 故障 保证原子性 如果在3到6步之间出现系统故障,数据库系统应该保证它的更新不反映出来,否则会使系统出现不一致状态,由事务管理部件来保证。 引入原子性,某个事务的所有动作要么全部反映,要么全部不反映。 对于事务要执行写操作的数据项,数据库系统在磁盘上记录其旧值,如果事务没能完成执行,数据库系统就恢复其旧值,使得表面上看好像事务从未执行过。 保证隔离性 如果在第3~6步之间,另一个事务也要访问相同的数据项,它会看到数据库的不一致状态。 即使每个事务都能确保一致性和原子性,但如果几个事务并发执行,它们的操作会以某种人们不希望的方式交叉执行,也会导致不一致的状态。 一种避免这样问题的途径是串行地执行事务; 另一种是数据库系统的并发控制部件来保证并发正确执行。 保证持久性 保证一旦事务成功地完成执行,该事务对数据库

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档