数据库与知识库原理 dbkb7.ppt

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

第七章 事务管理与并发控制 作为一个高度共享的资源,数据库应该支持多个不同的应用程序或用户对其进行同时访问,这就需要事务来管理和控制对共享数据的访问 为避免并发执行的进程之间产生不必要的相互影响(这种影响可能导致数据库中某些数据无效)所需的并发控制 为消除失败的影响所需的恢复 主要内容 事务 封锁机制 乐观的并发控制 多粒度锁 恢复 工程设计事务的要求 在客户/服务器体系结构中的并发控制 组事务 主要内容 事务 封锁机制 乐观的并发控制 多粒度锁 恢复 工程设计事务的要求 在客户/服务器体系结构中的并发控制 组事务 一致性约束 每个具体应用都会施加对数据库状态的语义限制,只有符合这些限制的数据库状态才是合法的(或有效的) 银行转账系统:所有账户下的资金总数应保持不变 机票订购系统:剩余座位数不能超过总的可用座位数 这种限制就是一致性约束 如果一个数据库状态能满足所有施加于其上的一致性约束,就被称为是一致性的 一致性保护 一个数据库在其生命周期里是经常更新的 每次更新都使数据库从一种状态转换到另一种状态,而一次更新常常要包含几个操作 某些更新操作可能会破坏数据库一致性 银行转帐:如果只有资金提取操作而没有资金存入操作,那就会破坏一致性:因为所有账户下的资金总数被改变了(即钱丢失了) 机票订购系统:如果在某次航班已经没有空位的情况下执行定票操作,就将导致数据库状态的不一致性 这种对数据库的更新操作必须能使数据库从某个一致性状态转换到另一个一致性状态的性质被称为一致性保护 多事务并发执行可能导致的问题 避免在两个事务之间产生有害影响的行为被称为隔离 隔离是指每个事务必须与其它事务分离开来,也就是说,在每个事务看来,它是惟一访问数据库与修改其中数据的事务,就像其它并发事务并不存在似的 事务的ACID性质 原子性(Atomicity):原子性要求事务的所有操作要么都被执行,要么都不执行 一致性(Consistency):事务将数据库由一个一致状态变为另一个一致状态 一致性允许数据库在执行一个事务的期间内存在不一致状态,但必须保证在事务结束时是一致的 隔离性(Isolation):并发事务要求相互隔离 当不同事务并发访问数据库时,不应产生相互影响 持久性(Durability):成功执行的事务结果要被永久保留,即使是在数据库系统遇到各种硬件错误(如磁头损坏)的情形下也要如此 事务语义 事务惟一的语义信息是其对数据的存取访问,也即它作用于数据库对象上的读、写操作 事务的语义难以显式定义 从数据库的观点来看,每一个事务能够最终被分解成上述基本操作 将事务看成一系列的读、写操作是合理的,只不过要求这些操作必须被原子地执行,也即是作为一个基本的、不可中断的动作执行 另外,由于对数据库系统来说,没有方法去检测数据库状态是否一致,从而可以认为,只要事务是相互隔离执行的,那么数据库状态就是一致的 一致性级别 无更新丢失 更新操作不会因为两个相互影响的事务而丢失 没有读脏数据 保证没有事务会去读其它事务中任何没有提交的数据库对象的状态 银行转账系统:假定一个事务对某个账户执行了资金提取操作之后,另一个事务去读该账户的帐目,那么,如果前一个事务执行夭折的话,就会发生后一个事务读脏数据的情况 可重复读 如果一个事务本身不会更新某个数据项的话,那它总能在这一数据项上执行两个相继的读操作,并且能得到相同的结果 这就排除了另一个事务在这两个读操作之间对该数据项执行更新操作的情况 在上述限制之下,隔离性就隐含了一致性 串行调度 如果事务之间可以串行执行(即事务一个接一个地执行)的话,3级一致性就可以得到保证 在一次调度中,如果其中所有事务都是串行执行的,这个调度就称为串行调度 可串行化 如果一个调度等价于其中所有事务按某个顺序串行执行,就称它为可串行化的 这两次执行将产生相同的输出 并且使数据库转到相同的状态 判定方法 为调度S构造优先图(Precedence Graph) 顶点集由所有参与调度的事务组成 边集由满足下列条件之一的边Ti→Tj组成 在Tj执行read(O)之前,Ti执行write(O) 在Tj执行write(O)之前,Ti执行read(O) 在Tj执行write(O)之前,Ti执行write(O) 根据优先图中是否有环,判断S是否可串行化 例 主要内容 事务 封锁机制 乐观的并发控制 多粒度锁 恢复 工程设计事务的要求 在客户/服务器体系结构中的并发控制 组事务 封锁机制 并发控制的主要方法 任何想访问某数据库对象的事务(无论这种访问是读还是写),都必须向系统申请一个锁 只有当获得锁后,才能访问这个对象 在此其间,其它想访问该对象的事务必须等到持有锁的事务终止之后,才能获得

文档评论(0)

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

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

1亿VIP精品文档

相关文档