数据库7章.ppt_第1页
数据库7章.ppt_第2页
数据库7章.ppt_第3页
数据库7章.ppt_第4页
数据库7章.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 事务管理,7.1 事务的基本概念 1、事务(Transaction) 是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。 事务和程序关系: (1)程序是静止的,事务是动态的。事务是程序的执行而不是程序本身。 (2)一个程序可分为多个独立部分同时执行,每一执行则是一个不同的事务,即一个程序中可包含多个事务 事务生成: 用户显式地定义事务 由DBMS按缺省自动划分事务,7.1 事务的基本概念,在SQL语言中,定义事务的语句有三条: BEGIN TRANSACTION 事务开始 COMMIT -事务提交 ROLLBACK -事务回滚 事务的分类: (1)

2、只读型 SET TRANSACTION READ ONLY (2)读写型 SET TRANSACTION READ WRITE,7.1 事务的基本概念,2、事务的状态,7.1 事务的基本概念,3、事务的特性(ACID) 原子性 一致性 隔离性 持续性 ACID特性遭到破坏的因素有: (1)多个事务并发运行时,不同事务的操作交叉执行; (2)事务在运行过程中被强行停止。,第七章 事务管理,4、更新事务的执行与恢复 更新事务的执行要求: 更新事务在活动状态下对数据库的任何修改都不能直接 在磁盘中进行,而只能在内存缓冲区中进行。 更新事务的恢复: (1)从活动状态转入失败状态的恢复 (2)从局部提交

3、状态转入失败状态的恢复。 7. 2 数据库恢复概述 数据库的恢复: 指DBMS必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能。,7.3 恢复的实现技术,数据库恢复原理:冗余 建立冗余数据常用技术: 数据转储 登记日志文件,一、数据转储 1. 数据转储的概念 转储即DBA定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。,得到 副本,转储,运行事务,数据转储与恢复例,7.3 恢复的实现技术,2、静态转储和动态转储 (1)静态转储:是在系统中无运行事务时进行的转储操作。 静态转储得到的一定是一个数据一致性的副本

4、。 (2)动态转储:是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。 3、海量转储和增量转储 (1)海量转储:每次转储全部数据库。 (2)增量转储:每次只转储上一次转储后更新过的数据。,7.3 恢复的实现技术,二、登记(建立)日志文件 1、日志文件的格式和内容 日志文件用来记录事务对数据库的更新操作的文件。 日志文件主要有两种格式: 以记录为单位 以数据块为单位 (1)以记录为单位的日志文件内容: 事务开始、结束标记 操作对象(表、属性等) 更新前、后值,7.3 恢复的实现技术,例:日志文件 事务编号 表 元组标识 属性 更新前 更新后 201 *事务开始 201 库存

5、k102 在库数量 410 310 201 应收帐 801-2341233 余额 1000 6000 201 *事务提交,(2)以数据库为单位的日志文件内容: 事务标识 更新前、后的数据块,7.3 恢复的实现技术,2、日志文件的作用 进行事务故障、系统故障恢复,并协助后备副本进行介质故障恢复。,3、登记日志文件 应遵循两条原则: (1)登记的次序严格按并发事务执行的时间次序。 (2)必须先写日志文件,后写数据库。,静态转储,运行事务,登记日志文件,7.4 故障恢复,一、事务故障及恢复 事务故障: 是指事务运行过程中由于种种原因使事务未运行至正常终止点而夭折的情况。如: 运算溢出 死锁而被选中撤

6、销该事务 违反了完整性规则等 事务故障的恢复: (1)反向扫描日志文件,查找该事务的更新操作。 (2)对该事务的更新操作执行逆操作。 (3)重复(1)、(2)直到遇此事务的开始标记。,7.4 故障恢复,二、系统故障及恢复(软故障) 系统故障:是指造成系统停止运转的任何事件,使得系统要重新启动。 例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电等。 系统故障的恢复: 恢复操作: 要撤销故障发生时未完成的事务 重做(REDO)已完成的事务 系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。,7.4 故障恢复,三、介质故障(硬故障) 介质故障:是指外存设备

7、故障。如: 磁盘损坏 磁头碰撞盘面 瞬时强磁场干扰 介质故障的恢复: (1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。 (2)装入相应的日志文件副本,重做已完成的事务。 介质故障的恢复需要DBA介入。但DBA只需要重装最近转储的数据库副本和有关的各日志文件副本,然后执行系统提供的恢复命令即可,具体的恢复操作仍由DBMS完成。,7.4 故障恢复,四、具有检查点的恢复技术 利用日志文件进行数据库恢复时存在的问题: (1)搜索整个日志文件将耗费大量的时间。 (2)很多需要REDO处理的事务实际上已经将它们的 更新操作结果写到数据库中了,然而恢复子系统又重新执 行了这些操作,

8、浪费了大量时间。 解决:使用检查点方法。 当事务T在一个检查点之前提交,T对数据库所做的修 改一定都已经写入数据库,这样,在进行恢复处理时,就 不必对事务T执行REDO操作,从而改善了恢复效率。,7.4 故障恢复,增加:日志文件中的检查点记录 一个重新开始文件 并让恢复子系统在登录日志文件期间动态地维护日志。 检查点记录的内容包括: 建立检查点时刻所有正在执行的事务清单(Ti)。 各事务最近一个日志记录的地址(Di)。,检查点记录,检查点Ci的重新开始记录,7.4 故障恢复,动态维护日志文件的方法是周期性地执行: 建立检查点,保存数据库状态。具体步骤是: 将当前所有日志记录写入磁盘日志文件上;

9、 在日志文件中写入一个检查点记录; 将当前所有数据记录写入磁盘的数据库中; 把检查点记录在日志文件中的地址写入重新开始文件。 恢复系统将根据事务的不同状态采取不同的恢复策略:,在检查点前开始,在 其后且故障点前提交,不重做,7.4 故障恢复,系统使用检查点方法进行恢复的步骤是: 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。 由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。 从检查点开始正向扫描日志文件 如有新开始的事务Tj,把Tj暂时放入UNDO-LIST队列; 如有提交的事务Tj,把Tj从UNDO-LIS

10、T队列移到REDO-LIST 队列;直到日志文件结束。 对UNDO-LIST中的每个事务 执行UNDO操作,对REDO-LIST 中的每个事务执行REDO操作。,7.4 故障恢复,五、数据库镜像 根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。DBMS自动保证镜像数据与主数据的一致性。 作用: 一旦出现介质故障,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。,在没有出现故障时,数据库镜像还可以用于并发操作,即当一个用户对数据加排它锁修改数据时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。,7.4

11、故障恢复,图7.6 数据库镜像,镜像,DB,7.6 .1 并发控制 的概念,并发操作在多用户共享系统中,多个用户同时存取同一数据的情形称为并发操作。 并发操作可能带来的问题: (1)破坏数据库的一致性 (2)破坏事务的隔离性,并发操作带来的三类数据不一致性: 1. 丢失修改 T1、T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果。,A=16,甲事务,乙事务,A=15,7.6 .1 并发控制 的概念,2不可重复读 T1读数据后,T2执行更新操作,使T1无法再现前一次读取结果。,B=100,甲事务,乙事务,不可重复读包括三种情况: (1) 某事务两次读同一数据时,得到的值不同。 (2)某

12、事务再次按相同条件读取数据时,发现记录丢失。 (3)某事务再次按相同条件读取数据时,发现多了记录。,7.6 .1 并发控制 的概念,3脏读 T1修改数据并写回磁盘,T2读取同一数据后,T1被撤销即数据恢复原值,T2读的数据与DB中的不一致,称“脏”数据。,C=100,甲事务,乙事务,C=200,C=100,“脏”数据,并发控制方法:封锁,7.6 .2 封锁与封锁协议,封锁:指事务T在对某个数据对象操作之前,对其加锁。在T未释放锁之前,其他的事务不能更新此数据对象。 基本的封锁类型有两种: 排它锁(X锁或写锁): 保证其他事务在T释放A上的锁之前,不能再读取和修改A。,共享锁(S锁或读锁): 保

13、证其他事务可以读A,但在T释放A上的S锁之前,不能对A做任何修改。,数据 对象A,事务T,T可读、不可改A,数据 对象A,事务T,T可读、修改A,7.6 .2 封锁与封锁协议,封锁协议:对数据对象加锁时,约定的规则。 封锁协议是为了保证并发操作的正确调度的。 三级封锁协议: 1、一级封锁协议 是事务T在修改数据R之前必须先对其加X锁,直到事务T结束(COMMIT和ROLLBACK)才释放。 作用:可防止丢失修改,并保证事务T是可恢复的。,例:表7.4,7.6 .2 封锁与封锁协议,2、二级封锁协议 是一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。 作用:防止丢失修

14、改,还可进一步防止读“脏”数据。,例:表7.6,例:表7.5,3、三级封锁协议 是一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。 作用:除防止丢失修改和读“脏”数据外,还可防止不可重复读。,7.6.3 活锁与死锁,活锁:使某个事务永远处于等待状态,而得不到执行的现象称为活锁。,等待,数据 R,避免活锁的方法:先来先服务。,7.6.3 活锁与死锁,死锁:并发执行的事务在没有任何外力的作用下都无法执行下去的僵持状态称为死锁。,数据 R1,数据 R2,请求加锁,7.6.3 活锁与死锁,1、死锁的预防 (OS中预防死锁的方法) (1)一次加锁法 要求每个事务必须一次将所要

15、使用的数据全部加锁。 缺点:降低系统的并发度;难于确定每个事务所要封锁的数据对象。 (2)顺序封锁法 预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 缺点:难于按规定的顺序施加封锁。 注意:这些方法并不适合数据库的特点。,7.6.3 活锁与死锁,2、死锁的诊断 (1)超时法 事务等待时间超过规定时限,就认为发生了死锁。 (2)等待图法 检测事务等待图中是否存在回路。 3、死锁的解除 选择一个处理代价最小的事务,将其撤消, 释放此事务持有的所有锁。,7.6 .4 并发调度的可串行性,调度:事务的执行次序。 调度方式: (1)串行调度 (2)并行调度 串行调度:多个事务依次执行的调

16、度。 并行调度:利用分时的方法处理多个事务的调度。 可串行化调度 :如果一个并发调度执行的结果等价于某一个串行调度的结果,称这种调度策略为可串行化的调度。,7.6 .4 并发调度的可串行性,例:表7.8的串行调度(T1T2) 执行结果:A=9000,B=31000; 例:表7.9的串行调度(T2T1) 执行结果:A=8000,B=32000; 例:表7.10 并行调度 执行结果:A=9000,B=31000; 与表7.8的串行调度结果相同,为可串行化调度。 例:表7.11 并行调度 执行结果:A=10000,B=22000; 与表7.8、7.9的串行调度结果都相同,为不可串行化调度。 注意 :

17、(1)一组事务并发调度的正确性准则:可串行化调度。 (2)一组事务的可串行化调度不惟一。,7.6 .4 并发调度的可串行性,两段锁协议:指所有事务必须分两个阶段对数据项加锁和解锁。 获得封锁:对任何数据进行读、写操作之前,要申请并获得对该数据的封锁; 释放封锁:释放一个封锁后,事务不再申请和获得任何其他封锁。 例如:事务T遵守两段锁协议,其封锁序列是; Slock A Slock B Xlock C Unlock B Unlock A Unlock C | 结论:若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。 说明:事务遵守两段锁协议是可串行化调度的充分条

18、件,而不是必要条件。,7.6.7 封锁的粒度,封锁粒度:封锁对象的大小。 封锁对象:属性、元组、关系、数据库 封锁粒度与系统的并发度和并发控制的开销密切相关: 封锁的粒度越大,并发度越小,系统开销越小; 封锁的粒度越小,并发度越高,系统开销越大。 多粒度封锁:一个系统中同时支持多种封锁粒度供不同事务选择的封锁方法。 封锁粒度选择原则: (1)需处理大量元组的事务以关系为封锁粒度。 (2)需处理多个关系的大量元组的事务以数据库为封锁粒度。 (3)处理少量元组的事务以元组为封锁粒度。,7.6.7 封锁的粒度,一、多粒度封锁 1. 定义多粒度树 四级粒度树,列 列 列 列 ,7.6.7 封锁的粒度,2. 多粒度树封锁协议 可对多粒度树中的每个结点独立加锁。(注意:自动对其所有后裔结点加同类型的锁。) 多粒度封锁方式:显式封锁和隐式封锁。,显式封锁是应事务的要求直接加到数据对象上的封锁; 隐式封锁是该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象加上了锁。,数据库,关系R1 关系Rn,元组 元组 元组 元组,列 列 列 列 ,7.6.7 封锁的粒度,封锁冲突检查: (1)与显示封锁冲突(本结点) (2)显示封锁与隐式封锁的冲突(与上层结点、与下层结点),问题?,检查效率低。,解决?,引进意向锁。,7.6.7 封锁的粒度,二 、 意向锁 意向锁加锁原则:如果对一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论