关系模式的规范化-Read.PPT

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

Hongyan Liu @ Tsinghua University 第17章 事务管理 刘红岩 清华大学 管理科学与工程系 liuhy@sem.tsinghua.edu.cn 事务管理 主要内容: 事务 并发控制 并发调度异常 基于封锁的并发控制技术 恢复 故障类型 日志 系统故障恢复技术 介质故障恢复技术 事务 Transaction 事务的概念 事务(transaction)是DBMS中的一个程序执行单元,通常由一组存取数据库的操作组成 A transaction is a logical unit of work A transaction is a discrete unit of work that must be completely processed or not processed at all within a computer system 事务的性质(ACID) ACID: 原子性(atomicity) 一致性(consistency) 隔离性(isolation) 持久性(durability) 原子性(atomicity) 构成事务的所有操作要么全部执行,反映到数据库中,要么全部不执行,没有对数据库中的数据造成影响。 事务满足了此特性,用户就不必担心由于一个事务的部分操作的执行而对数据库所造成的不正确的状态 一致性(consistency) 一致性:事务所包含的操作应使数据库从一个一致状态转变为另一个一致状态。 在任一时刻,数据库中的所有对象(表、元组、分量等)的当前取值称为此数据库的一个状态。 如果在一个状态下,所有数据库对象的值都满足各自相应的约束条件,则称这个状态为数据库的一个一致状态。否则,就称为一个不一致状态。 为了使事务满足此特性,用户必须正确地定义一个事务所应包含的操作。 隔离性(isolation) 隔离性:在多用户环境下,同一时刻通常有多个事务的操作在交叉执行。事务的隔离性指的是事务的执行不受与其同时执行的其他事务的影响,如同事务是串行执行的。 持久性(durability) 一个事务如果被成功执行,其对数据库的影响是持久的,用户不必担心由于故障的发生使得一个事务的作用没有反映到数据库中。 例子 销售员向一个客户销售100个产品P 查看该产品的库存量S,将欲销售的产品数量100从库存量中扣除, 如果原库存量S大于欲销售量100,则将数据库中的产品销售量Q设为100, 否则,若库存量小于100,将数据库中的当前库存量还原为原来的S。 例子(cont.) Read(S); S=S-100; Write (S) If (S0) rollback Else Q=100; Write(Q) Commit 例子(cont.) 在上述的产品销售的事务中主要涉及两个操作,一个是将库存量减少100,另一个是增加一个新的销售量100,这样可保证数据库中某个产品的总量(库存量和销量)在销售前后保持不变,等于进货总量,这体现了事务的一致性。 事务中的这两个操作要么都执行,要么都不执行,体现了事务的原子性。 如果在将库存量写回数据库之后发生了故障,销售量没有被写回数据库,则数据库就被转变到一个不一致的状态,因此需要合理的数据库恢复机制以防止这种情况的发生。 例子(cont.) 如果这个事务已告知用户被成功执行,则不管发现什么事情,例如软、硬件故障,该产品的销售量增加了100、库存量减少了100都应该被反映到数据库中。这就是事务的持久性特性的体现。 要保证事务的持久性也需要数据库的恢复系统能够将发生故障时尚未将操作结果体现到数据库中的操作进行适当处理,以便不会丢失数据。 例子(cont.) 若事务T1与T2并发执行,事务的隔离性要求每个事务的执行结果应与这些事务的某一串行执行结果相同,即与先执行T1再执行T2的结果,或者先执行T2再执行T1的结果相同。有效的并发控制可保证隔离性。 并发控制 并发调度异常 调度 多个事务包含的操作之间按照一定顺序执行的方式称为一种调度(schedule)。 如果每个事务的操作与其他事务的操作之间没有交错,是串行执行的,则称为串行调度(serial schedule)。 事务并发执行时,不同事务的操作是交错执行的,称为并发调度(concurrent schedule) 并发调度 两个事务的交错调度 串行调度与并发调度 串行调度:将数据库从一个一致状态转换到另一个一致状态。 并发调度: 有利于提高系统吞吐量(system throughput) 一类涉及I/O操作,例如从磁盘读取数据到内存; 另一类是CPU的操作。这两类操作可以并行执行 在一个事务进行I/O操作时,如果允许CPU 处理其他事务的操作,则可以有效降低CPU处于空闲状态的时间

文档评论(0)

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

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

1亿VIP精品文档

相关文档