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

事务及恢复技术.ppt

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

Chapter 2 事务(transaction) 为什么需要事务? 概念 事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位 事务是恢复和并发控制的基本单位 事务的ACID特性(1) 原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态 事务的ACID特性(2) 隔离性(Isolation):对并发执行而言,一个事务的执行不能被其他事务干扰 一个事务内部的操作及使用的数据对其它并发事务是隔离的 并发执行的各个事务之间不能互相干扰 持续性(Durability )/永久性(Permanence) 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 接下来的其他操作或故障不应该对其执行结果有任何影响。 一致性 学生数据库 IC0:学号唯一 IC1:每门课有先修课,学生必须先完成先修课才能选当前课 IC2:每门课有最高限选人数 …… DBMS要保证事务的执行没有违反任何约束 原子性 银行转帐:从帐号A中取出一万元,存入帐号B。 定义一个事务,该事务包括两个操作 这两个操作要么全做,要么全不做 全做或者全不做,数据库都处于一致性状态。 如果只做一个操作,数据库就处于不一致性状态。 隔离性(1) 隔离性(2) 定义事务 BEGIN TRANSACTION SQL 语句1 SQL 语句2 …… COMMIT TRANSACTION 实现事务的隔离性:并发控制 多事务执行方式 (1) 串行执行 每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行 不能充分利用系统资源,发挥数据库共享资源的特点 并发控制(2) (2)交叉并发方式(interleaved concurrency) 事务的并行执行是这些并行事务的并行操作轮流交叉运行。宏观并发,微观串行。 是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统的效率 并发控制(3) (3)同时并发方式(simultaneous concurrency) 多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行 最理想的并发方式,但受制于硬件环境 事务并发执行带来的问题 可能会存取和存储不正确的数据,破坏事务的隔离性和数据库的一致性 并发控制机制的任务 对并发操作进行正确调度 保证事务的隔离性 保证数据库的一致性 三个关键问题 丢失更新问题 读脏数据问题 不可重复读问题 丢失更新 描述:事务1与事务2从数据库中读入同一数据并修改,事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。 读脏数据 事务1修改某一数据,并将其写回磁盘 事务2读取同一数据 事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值 事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。 不可重复读 事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。 三类不可重复读(事务1读取某一数据后): 事务2对其做了修改 事务2删除了其中部分记录 事务2插入了一些记录 后两种不可重复读有时也称为幻影现象(phantom row) 小结 锁 加锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁 加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。 加锁是实现并发控制的一个非常重要的技术 基本加锁类型 DBMS通常提供了多种类型的加锁。一个事务对某个数据对象加锁后究竟拥有什么样的控制是由加锁的类型决定的。 基本加锁类型 排它锁(eXclusive lock,简记为X锁) 共享锁(Share lock,简记为S锁) 排它锁 排它锁又称为写锁 若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁 共享锁 共享锁又称为读锁 若事务T对数据对象A加上S锁,则其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁 三、锁的相容矩阵 加锁协议 在运用X锁和S锁对数据对象加锁时,需要约定一些规则:加锁协议(Locking Protocol) 何时申请X锁或S锁 持锁时间、何时释放 不同的加锁协议,在不同的程度上为并发操 作的正确调度提供一定的保证 常用的加锁协议:三级加锁协议 1级加锁协议 事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放 正常结束(COMMIT) 非正常结束(ROLLBACK) 1级锁协议可以解决什么

文档评论(0)

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

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

1亿VIP精品文档

相关文档