上海大学数据库2部分概念整理分析.doc

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

第八章 数据库管理 一、本章重要概念 (1)事务的定义,COMMIT和ROLLBACK的语义, 事务是由若干数据库操作组成的一个逻辑工作单位,是一个不可分割的工作单位。 一个应用程序可以包括多个事务。 事务以BEGIN TRANSACTION语句的成功执行开始,以COMMIT或ROLLBACK语句的成功执行结束。 COMMIT(提交)语句表示一事务的全部操作都已成功,它对DB的所有更新可真正写到DB中。 ROLLBACK(回退)语句表示事务没有成功地完成全部操作,系统将撤消该事务对DB已作的更新 事务的ACID性质 事务有四个重要性质:原子性、一致性、隔离性和持久性。通常称为“ACID性质”。 原子性(atomicity): 事务对数据库的更新要么全部起作用,要么完全不起作用。 DBMS的事务管理子系统 一致性(consistency):事务将数据库从一个一致性状态转变为另一个一致性状态。 程序员(正确地编写事务)DBMS的完整性子系统 隔离性(isolation ):事务相互隔离,在多个事务并发执行时,任一事务的更新操作在该事务成功提交前对其他事务都是不可见的。 DBMS的并发控制子系统 持久性(durability):事务一旦成功提交,其对数据库的更新就永久有效,不会因系统崩溃等而丢失。 DBMS的恢复管理子系统 事务的状态变迁图。 (2)存储器类型,稳定存储器的实现,数据传送过程。 (3)恢复的定义、 系统能把数据库从被破坏、不正确的状态、恢复到最近一个正确的状态,DBMS的这种能力称为数据库的可恢复性。 基本原则和实现方法, 恢复的基本策略:冗余(数据重复存储) 实现方法: 备份 定期对数据库复制或转储(静态转储和动态转储,海量转储和增量转储)。 日志 执行事务时,记录其开始、结束和对DB的每次更新操作。 故障的类型, 事务故障 非预期事务故障:运算错误、数据错误、死锁等,故障事务夭折 可预期事务故障:在事务中可预期出错的地方所加的ROLLBACK语句 系统故障: 硬件、系统软件出错,停电等,事务执行被打断,内存中数据被破坏 介质故障: 磁头、磁盘控制器或磁盘损坏,盘上数据丢失,病毒破坏等,DB遭破坏 检查点机制, DBMS定时设置检查点,在检查点时刻才真正做到把对DB的修改写到磁盘,并在日志文件写入一条检查点记录。 根据日志文件建立重做队列和事务撤消队列。 对重做队列中的事务进行REDO处理,对撤消队列中的事务进行UNDO处理。 REDO和UNDO操作,运行记录优先原则。 并发操作带来的三个问题, 丢失更新问题:一事务所作的更新操作因另一事务的操作而丢失。 读“脏数据”问题:又称为未提交依赖,指一事务取用了别的事务未提交随后又被撤消的数据。 不一致分析问题:指事务从数据库中读取了处于不一致状态的数据,并因此进行了不一致的分析。 X锁、 排它型封锁(写锁,X封锁):一个事务对数据对象加了X锁后,在它释放X锁之前不允许其他事务再对该数据对象加任何锁。 共享型锁(读锁,S封锁) :一个事务对数据对象加了S锁后,允许其他事务再对该数据对象加S锁,但在它释放S锁之前不允许其他事务加X锁。 PX协议、 事务若要更新数据,则必须先提出对此数据对象的X封锁请求;事务如果未获准X封锁,那么进入等待状态,直至获准在此数据对象上的X封锁,才能继续执行。PX协议可以解决因多事务同时更新同一数据对象而引起的更新丢失问题。 任何事务T在更新记录R之前必须先执行“XFIND R”操 作,以获得对R的X锁,才能读或写记录R;如果未获准X锁,那么 这个事务进入等待状态。一直到获准X锁,事务才能继续做下 去。(如果过早地解锁,有可能使其他事务读了未提交数据(且 随后被回退),引起丢失其他事务的更新。 PXC协议, 是在“PX协议”上再加一规定:解除X锁的操作合并到事务的结束(COMMIT或ROLLBACK)操作中。PXC协议可以解决因事务ROLLBACK而引起的更新丢失问题。 S锁、PS协议、PSC协议, PS:任何要更新记录R的事务必须先执行“SFIND R”操作, 以获得对R的S锁.当事务获准对R的S锁后,若要更新记录R必须用 “UPDX R”操作,这个操作首先把S锁升级为X锁,若成功则更新记录,否则这个事务进入等待队列。 PSC: PS协议加上S锁的解除操作应该合并到事务的结束 (COMMIT或ROLLBACK)操作中。 活锁、 出现某个事务永远处于等待状态得不到执行的现象。 避免活锁的一个简便方法是采用“先来先服务”排队的策略。封锁子系统按请求在时间上的先后次序对事务排序,数据对象上原有的锁一释放,即执行队列中第一个事务的封锁请求。 饿死和死锁, 出现若干事务因循环等待而

文档评论(0)

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

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

1亿VIP精品文档

相关文档