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

上海交通大学高级数据库课件陆朝俊ed6ch14解读.ppt

上海交通大学高级数据库课件陆朝俊ed6ch14解读.ppt

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

隔离级别的实现 并发控制机制:基本思想就是使每个事务在正确的时间处理正确的数据. 何为正确的时间?正确的数据? 锁 事务时间戳 多版本技术,如DB快照 End 15.* 第14章 事务 事务概念 事务是构成逻辑工作单元的操作集合,它访问并可能更新数据库. 在程序中界定如下,程序的执行即引起事务. begin transaction ... end transaction 最高目标是保持数据库一致性.但有两个问题可能破坏一致性: 各种故障, 如硬件故障和系统崩溃 多个事务的并发执行 事务的ACID性质 原子性(Atomicity):事务中的步骤必须作为单一的不可分割的单元执行,即要么完全执行,要么根本不执行. 但在现实的执行过程中可能因各种故障而失败.这时如何确保原子性? 一致性(Consistency):在单独执行时应保持数据库一致性. 从一致的DB状态开始执行,结束时必须保证DB仍然处于一致的状态. 但在事务执行过程中,DB可能暂时处于不一致状态. 隔离性(Isolation):操作不应被并发执行的其他事务干扰. 但在现实的执行过程中存在并发,事务的各个操作可能被分隔开. 可能影响系统性能,因此可放宽隔离程度. 耐久性(Durability):事务成功结束后,它对数据库所做的更新将不再受故障的影响. 一个简单的事务模型 真实事务的操作是各种SQL语句或宿主语言语句. 简单事务模型 只考虑单值数据,用变量名表示. 只考虑数据在主存和磁盘之间的移动:read和write操作. read(X):将数据X从DB读入事务主存缓冲区中的变量X write(X):将变量X的值从事务主存缓冲区写回DB 暂时忽略插入删除等操作 只考虑算术操作 数据的更新是在主存中进行的,最大的问题是更新后的数据是否已经写入磁盘上的DB. 不一定在更新后立即存盘! 目前假设write是立即更新DB的. 转账例 从账户A 转 $50到账户B : T: read(A) A := A – 50 write(A) read(B) B := B + 50 write(B) 一致性:事务执行前后A与B之和保持不变.显然T满足此要求. 这是程序员的责任. 原子性:若在write(A)之后及write(B)之前发生故障,则DB处于不一致状态! 即使不发生故障,这样的不一致状态在执行过程中同样存在. 系统应确保这种不一致状态在DB系统中是不可见的. 原子性要求要么不开始,要么完成.这就能保证不一致状态不可见. 这是恢复系统的责任. 转帐例(续) 耐久性:一旦用户被告知事务已经完成($50转账已经发生),则系统必须保证即使再发生故障,这次转账的相关数据也不会丢失. 也是恢复系统的责任. 隔离性:若在write(A)与write(B)之间有另一事务读取并计算A+B,则会得到错误的总额. 并发执行的多个正确事务(都能确保原子性和一致性)仍然可能导致不一致的状态! 串行执行能避免这种情况.但性能差. 受控制的并发能解决问题.这是并发控制系统的责任. 存储结构 易失性(Volatile)存储器: 系统崩溃后不能幸存 例如: 主存, 高速缓存 非易失性(Nonvolatile)存储器: 可以在系统崩溃后幸存 例如: 磁盘, 磁带, 闪存, 非易失性RAM (电池供电) 稳定(Stable)存储器: 能够经受任何故障的存储器, 内容永不丢失. 理论上不存在,但可通过有关技术来无限逼近 原子性,耐久性都依赖于稳定存储器. 事务状态 活动的(Active):初始状态;事务执行中. 失败(Failed):发现不能继续正常执行之后. 中止(Aborted):撤销事务对DB的所有改变(回滚),使DB恢复到事务开始前的状态. 这就保证了原子性 中止后系统可以选择重启或杀死该事务. 部分提交(Partially committed):最后一条语句执行之后. 数据的改变可能仍在主存中 接着向稳定存储器写入足够的信息以确保耐久性. 提交(Committed):事务成功完成. 这个状态必须具有耐久性. 已提交的事务不能再中止.撤销其工作的唯一方法是编写并执行一个补偿事务. 中止和提交都是可以接受的事务结束状态. 事务状态 (续) 可见的外部写 事务中可能执行可见的外部写操作,例如: 向屏幕写数据 发电子邮件 ATM支付现金 这些操作的结果处于DB系统控制之外,是不可撤销的 为何需要并发 提高吞吐量和资源利用率 CPU活动和I/O活动可以并行进行(硬件支持). 从而增加单位时间内执行的事务数目. 资源空闲时间减少 减少平均响应时间 长短事务如果串行执行,短事务可能要等很长时间 并发执行可以使排在后面的短事务提前执行并早早结束.而排在前面的长事务所增加的时间则可忽略. 并发控制 并发可能违背隔离性的要求

文档评论(0)

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

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

1亿VIP精品文档

相关文档