数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理

上传人:E**** 文档编号:89416362 上传时间:2019-05-24 格式:PPT 页数:35 大小:867.50KB
返回 下载 相关 举报
数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理_第1页
第1页 / 共35页
数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理_第2页
第2页 / 共35页
数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理_第3页
第3页 / 共35页
数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理_第4页
第4页 / 共35页
数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理》由会员分享,可在线阅读,更多相关《数据库系统原理及应用-电子教案-李晓峰 第8章 数据库事务管理(35页珍藏版)》请在金锄头文库上搜索。

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

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

3、T或ROLLBACK语句明确指出提交或回滚事务。 (2)隐含方式。某些SQL语句在执行时马上导致提交操作。 这些主要是DDL语句,如CREATE TABLE,DROP TABLE,CREATE VIEW,CREATE INDEX等。 (3)自动方式。定期将完成的事务提交。,8.2 并发控制,1 并发控制的概念 并发操作在多用户共享系统中,多个用户同时存取同一数据的情形称为并发操作。 并发操作可能带来的问题: (1)破坏数据库的一致性 (2)破坏事务的隔离性,并发操作带来的三类数据不一致性: 1. 丢失修改 T1、T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果。,A=16,甲事务,乙

4、事务,A=15,2不可重复读 T1读数据后,T2执行更新操作,使T1无法再现前一次读取结果。,B=100,甲事务,乙事务,不可重复读包括三种情况: (1) 某事务两次读同一数据时,得到的值不同。 (2)某事务再次按相同条件读取数据时,发现记录丢失。 (3)某事务再次按相同条件读取数据时,发现多了记录。,3脏读 T1修改数据并写回磁盘,T2读取同一数据后,T1被撤销即数据恢复原值,T2读的数据与DB中的不一致,称“脏”数据。 并发控制方法:封锁,C=100,甲事务,乙事务,C=200,“脏”数据,8.3 封锁与封锁协议,封锁:指事务T在对某个数据对象操作之前,对其加锁。在T未释放锁之前,其他的事

5、务不能更新此数据对象。 基本的封锁类型有两种: 排它锁(X锁或写锁): 保证其他事务在T释放A上的锁之前,不能再读取和修改A。,共享锁(S锁或读锁): 保证其他事务可以读A,但在T释放A上的S锁之前,不能对A做任何修改。,数据 对象A,事务T,T可读、不可改A,数据 对象A,事务T,T可读、修改A,封锁协议:对数据对象加锁时,约定的规则。 封锁协议是为了保证并发操作的正确调度的。 三级封锁协议: 1、一级封锁协议 是事务T在修改数据R之前必须先对其加X锁,直到事务T结束(COMMIT和ROLLBACK)才释放。 作用:可防止丢失修改,并保证事务T是可恢复的。,2、二级封锁协议 是一级封锁协议加

6、上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。 作用:防止丢失修改,还可进一步防止读“脏”数据。,3、三级封锁协议 是一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。 作用:除防止丢失修改和读“脏”数据外,还可防止不可重复读。,8.4 活锁与死锁,活锁:使某个事务永远处于等待状态,而得不到执行的现象称为活锁。,等待,数据 R,避免活锁的方法: 先来先服务。,死锁,数据 R1,数据 R2,请求加锁,1、死锁的预防 (OS中预防死锁的方法) (1)一次加锁法 要求每个事务必须一次将所要使用的数据全部加锁。 缺点:降低系统的并发度;难于确定每个事务所要封锁

7、的数据对象。 (2)顺序封锁法 预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。 缺点:难于按规定的顺序施加封锁。 注意:这些方法并不适合数据库的特点。,2、死锁的诊断 (1)超时法 事务等待时间超过规定时限,就认为发生了死锁。 (2)等待图法 检测事务等待图中是否存在回路。 3、死锁的解除 选择一个处理代价最小的事务,将其撤消,释放此事务持有的所有锁。,8.5并发调度的可串行性,调度:事务的执行次序。 调度方式: (1)串行调度 (2)并行调度 串行调度:多个事务依次执行的调度。 并行调度:利用分时的方法处理多个事务的调度。 可串行化调度 :如果一个并发调度执行的结果等价于某一

8、个串行调度的结果,称这种调度策略为可串行化的调度。,两段锁协议: 指所有事务必须分两个阶段对数据项加锁和解锁。 获得封锁:对任何数据进行读、写操作之前,要申请并获得对该数据的封锁; 释放封锁: 释放一个封锁后,事务不再申请和获得任何其他封锁。 例如:事务T遵守两段锁协议,其封锁序列是; Slock A Slock B Xlock C Unlock B Unlock A Unlock C | 结论:若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。 说明:事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。,8.6. 封锁的粒度,封锁粒度:封锁对象的大小

9、。 封锁对象:属性、元组、关系、数据库 封锁粒度与系统的并发度和并发控制的开销密切相关: 封锁的粒度越大,并发度越小,系统开销越小; 封锁的粒度越小,并发度越高,系统开销越大。 多粒度封锁:一个系统中同时支持多种封锁粒度供不同事务选择的封锁方法。 封锁粒度选择原则: (1)需处理大量元组的事务以关系为封锁粒度。 (2)需处理多个关系的大量元组的事务以数据库为封锁粒度。 (3)处理少量元组的事务以元组为封锁粒度。,8.7 SQLSERVER的并发控制的实现 1.SQL SERVER中的锁 2.SQL SERVER锁的模式 3.SQL SERVER隔离级别 4死锁及处理,8.8 数据库恢复概述,数

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

11、即转储和用户事务可以并发执行。 3、海量转储和增量转储 (1)海量转储:每次转储全部数据库。 (2)增量转储: 每次只转储上一次转储后更新过的数据。,二、登记(建立)日志文件 1、日志文件的格式和内容 日志文件用来记录事务对数据库的更新操作的文件。 日志文件主要有两种格式: 以记录为单位 以数据块为单位 (1)以记录为单位的日志文件内容: 事务开始、结束标记 操作对象(表、属性等) 更新前、后值,例:日志文件 事务编号 表 元组标识 属性 更新前 更新后 201 *事务开始 201 库存 k102 在库数量 410 310 201 应收帐 801-2341233 余额 1000 6000 20

12、1 *事务提交,(2)以数据库为单位的日志文件内容: 事务标识 更新前、后的数据块,2、日志文件的作用 进行事务故障、系统故障恢复,并协助后备副本进行介质故障恢复。,3、登记日志文件 应遵循两条原则: (1)登记的次序严格按并发事务执行的时间次序。 (2)必须先写日志文件,后写数据库。,静态转储,运行事务,登记日志文件,8.10 故障恢复,一、事务故障及恢复 事务故障: 是指事务运行过程中由于种种原因使事务未运行至正常终止点而夭折的情况。如: 运算溢出 死锁而被选中撤销该事务 违反了完整性规则等 事务故障的恢复: (1)反向扫描文件日志,查找该事务的更新操作。 (2)对该事务的更新操作执行逆操

13、作。 (3)重复(1)、(2)直到遇此事务的开始标记。,二、系统故障及恢复(软故障) 系统故障:是指造成系统停止运转的任何事件,使得系统要重新启动。 例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电等。 系统故障的恢复: 恢复操作: 要撤销故障发生时未完成的事务 重做(REDO)已完成的事务 系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。,三、介质故障(硬故障) 介质故障:是指外存设备故障。如: 磁盘损坏 磁头碰撞盘面 瞬时强磁场干扰 介质故障的恢复: (1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。 (2)装入相应的日

14、志文件副本,重做已完成的事务。 介质故障的恢复需要DBA介入。但DBA只需要重装最近转储的数据库副本和有关的各日志文件副本,然后执行系统提供的恢复命令即可,具体的恢复操作仍由DBMS完成。,四、具有检查点的恢复技术 利用日志文件进行数据库恢复时存在的问题: (1)搜索整个日志文件将耗费大量的时间。 (2)很多需要REDO处理的事务实际上已经将它们的 更新操作结果写到数据库中了,然而恢复子系统又重新执 行了这些操作,浪费了大量时间。 解决:使用检查点方法。 当事务T在一个检查点之前提交,T对数据库所做的修 改一定都已经写入数据库,这样,在进行恢复处理时,就 不必对事务T执行REDO操作,从而改善

15、了恢复效率。,增加:日志文件中的检查点记录 一个重新开始文件 并让恢复子系统在登录日志文件期间动态地维护日志。 检查点记录的内容包括: 建立检查点时刻所有正在执行的事务清单(Ti)。 各事务最近一个日志记录的地址(Di)。,检查点记录,检查点Ci的重新开始记录,动态维护日志文件的方法是周期性地执行: 建立检查点,保存数据库状态。具体步骤是: 将当前所有日志记录写入磁盘日志文件上; 在日志文件中写入一个检查点记录; 将当前所有数据记录写入磁盘的数据库中; 把检查点记录在日志文件中的地址写入重新开始文件。 恢复系统将根据事务的不同状态采取不同的恢复策略:,在检查点前开始,在 其后且故障点前提交,不

16、重做,系统使用检查点方法进行恢复的步骤是: 从重新开始文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录。 由该检查点记录得到检查点建立时刻所有正在执行的事务清单ACTIVE-LIST。 从检查点开始正向扫描日志文件 如有新开始的事务Tj,把Tj暂时放入UNDO-LIST队列; 如有提交的事务Tj,把Tj从UNDO-LIST队列移到REDO-LIST 队列;直到日志文件结束。 对UNDO-LIST中的每个事务 执行UNDO操作,对REDO-LIST 中的每个事务执行REDO操作。,五、数据库镜像 根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。DBMS自动保证镜像数据与主数据的一致性。 作用: 一旦出现介质故障,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号