嘉兴学院数学与信息工程学院

上传人:艾力 文档编号:49517984 上传时间:2018-07-29 格式:PPT 页数:121 大小:330KB
返回 下载 相关 举报
嘉兴学院数学与信息工程学院_第1页
第1页 / 共121页
嘉兴学院数学与信息工程学院_第2页
第2页 / 共121页
嘉兴学院数学与信息工程学院_第3页
第3页 / 共121页
嘉兴学院数学与信息工程学院_第4页
第4页 / 共121页
嘉兴学院数学与信息工程学院_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《嘉兴学院数学与信息工程学院》由会员分享,可在线阅读,更多相关《嘉兴学院数学与信息工程学院(121页珍藏版)》请在金锄头文库上搜索。

1、嘉兴学院数学与信息工程学院数据库系统概论 An Introduction to Database System第八章 并发控制An Introduction to Database System第八章 并发控制8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结An Introduction to Database System并发控制概述多事务执行方式 (1)事务串行执行n每个时刻只有一个事务运行,其他 事务必须等到这个事务结束以后方能 运行n不能充分利用系统

2、资源,发挥数据 库共享资源的特点An Introduction to Database System并发控制(续)(2)交叉并发方式(interleaved concurrency)n事务的并行执行是这些并行事务的并行 操作轮流交叉运行n是单处理机系统中的并发方式,能够减 少处理机的空闲时间,提高系统的效率An Introduction to Database System并发控制(续)(3)同时并发方式(simultaneous concurrency)n多处理机系统中,每个处理机可以运行 一个事务,多个处理机可以同时运行多个事 务,实现多个事务真正的并行运行n最理想的并发方式,但受制于硬件

3、环境n更复杂的并发方式机制An Introduction to Database System事务并发执行带来的问题n可能会存取和存储不正确的数据,破坏 事务的隔离性和数据库的一致性nDBMS必须提供并发控制机制n并发控制机制是衡量一个DBMS性能的重 要标志之一An Introduction to Database System8.1 并发控制概述n并发控制机制的任务n对并发操作进行正确调度n保证事务的隔离性n保证数据库的一致性An Introduction to Database SystemT1的修改被T2覆盖了!读A=16AA-3 写回A=13 读A=16 AA-1写回A=15事务 T

4、2事务 T1数据不一致实例:飞机订票系统An Introduction to Database System并发操作带来的数据不一致性n丢失修改(lost update)n不可重复读(non-repeatable read)n读“脏”数据(dirty read)An Introduction to Database System1. 丢失修改丢失修改是指事务1与事务2从数据库中读入同一数据并修改事务2的提交结果破坏了事务1提交的结果,导致事务1的修改被丢失。An Introduction to Database System2. 不可重复读不可重复读是指事务1读取数据后,事务2执行更新操作,使

5、事务1无法再现前一次读取结果。An Introduction to Database System三类不可重复读 事务1读取某一数据后: 1。事务2对其做了修改,当事务1再次读该 数据时,得到与前一次不同的值。2. 事务2删除了其中部分记录,当事务1再次 读取数据时,发现某些记录神密地消失了 。 3. 事务2插入了一些记录,当事务1再次按相 同条件读取数据时,发现多了一些记录。 后两种不可重复读有时也称为幻影现象(phantom row)An Introduction to Database System3. 读“脏”数据事务1修改某一数据,并将其写回磁盘事务2读取同一数据后事务1由于某种原因

6、被撤消,这时事务1已修改过的数据恢复原值事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。An Introduction to Database System图8.1 三种数据不一致性 T1T2 读A=16 AA-1写回A=15读A=16AA-1 写回A=15(a) 丢失修改 An Introduction to Database System图8.1 三种数据不一致性(续) 读B=100BB*2 写回B=200 读A=50读B=100求和=150 读A=50读B=200求和=250(验算不对) T2T1(b) 不可重复读 An Introduction to Dat

7、abase System图8.1 三种数据不一致性(续)读C=200 读C=100CC*2写回C ROLLBACKC恢复为100T2T1(c) 读“脏”数据An Introduction to Database System第八章 并发控制8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结An Introduction to Database System8.2 封锁一、什么是封锁二、基本封锁类型三、基本锁的相容矩阵An Introduction to Dat

8、abase System一、什么是封锁n封锁就是事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁n加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。n封锁是实现并发控制的一个非常重要的技术An Introduction to Database System8.2 封锁一、什么是封锁二、基本封锁类型三、基本锁的相容矩阵An Introduction to Database System二、基本封锁类型nDBMS通常提供了多种类型的封锁。一个事务 对某个数据对象加锁后究竟拥有什么样的控制 是由封锁的类型决定的。n基本封锁类型

9、n排它锁(eXclusive lock,简记为X锁)n共享锁(Share lock,简记为S锁)An Introduction to Database System排它锁n排它锁又称为写锁n若事务T对数据对象A加上X锁,则只允许 T读取和修改A,其它任何事务都不能再 对A加任何类型的锁,直到T释放A上的锁An Introduction to Database System共享锁n共享锁又称为读锁n若事务T对数据对象A加上S锁,则其它事 务只能再对A加S锁,而不能加X锁,直到 T释放A上的S锁An Introduction to Database System8.2 封锁一、什么是封锁二、基本封

10、锁类型三、基本锁的相容矩阵An Introduction to Database System三、锁的相容矩阵Y=Yes,相容的请求 N=No,不相容的请求T1 T2XS-XNNYSNYY-YYYAn Introduction to Database System第八章 并发控制8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结An Introduction to Database System8.3 封锁协议n在运用X锁和S锁对数据对象加锁时,需要约定一些规

11、则:封锁协议(Locking Protocol) n何时申请X锁或S锁n持锁时间、何时释放n 不同的封锁协议,在不同的程度上为并发操作的正确调度提供一定的保证n常用的封锁协议:三级封锁协议An Introduction to Database System1级封锁协议n事务T在修改数据R之前必须先对其加X锁 ,直到事务结束才释放n正常结束(COMMIT)n非正常结束(ROLLBACK)n1级封锁协议可防止丢失修改n在1级封锁协议中,如果是读数据,不需要加 锁的,所以它不能保证可重复读和不读“脏”数 据。An Introduction to Database System1级封锁协议T1T2 X

12、lock A获得 读A=16AA-1写回A=15CommitUnlock A Xlock A 等待 等待 等待 等待 获得Xlock A 读A=15 AA-1 写回A=14 Commit Unlock A 没有丢失修改 An Introduction to Database System1级封锁协议读A=15 Xlock A获得 读A=16AA-1写回A=15 Rollback Unlock AT2T1读“脏”数据An Introduction to Database System1级封锁协议Xlock B获得读B=100BB*2写回B=200CommitUnlock B读A=50读B=100

13、求和=150 读A=50读B=200求和=250(验算不对) T2T1不可重复读An Introduction to Database System2级封锁协议n1级封锁协议+事务T在读取数据R前必须先 加S锁,读完后即可释放S锁n2级封锁协议可以防止丢失修改和读“脏”数 据。n在2级封锁协议中,由于读完数据后即可释 放S锁,所以它不能保证可重复读。An Introduction to Database System2级封锁协议不可重复读 Sclock A获得读A=50Unlock A Sclock B获得读B=100Unlock B 求和=150Xlock B等待 等待 获得Xlock B

14、读B=100 BB*2 写回B=200 Commit Unlock BT2T1Sclock A获得读A=50Unlock ASclock B获得读B=200Unlock B求和=250(验算不对)T2T1 (续)An Introduction to Database System3级封锁协议n1级封锁协议 + 事务T在读取数据R之前 必须先对其加S锁,直到事务结束才释放n3级封锁协议可防止丢失修改、读脏数据和不 可重复读。An Introduction to Database System3级封锁协议T1T2 Slock A读A=50Slock B读B=100求和=150 读A=50读B=10

15、0求和=150CommitUnlock AUnlock B Xlock B 等待 等待 等待 等待 等待 等待 等待 等待 获得Xlock B 读B=100 BB*2 写回B=200 CommitUnlock B 可重复读 An Introduction to Database System3级封锁协议T1T2 Xlock C读C= 100CC*2写回C=200 ROLLBACK(C恢复为100)Unlock C Slock C 等待 等待 等待 等待 获得Slock C 读C=100 Commit C Unlock C不读“脏”数据 An Introduction to Database S

16、ystem4封锁协议小结n三级协议的主要区别n什么操作需要申请封锁n何时释放锁(即持锁时间)An Introduction to Database System封锁协议小结(续)An Introduction to Database System第八章 并发控制8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结An Introduction to Database System8.4 活锁和死锁n封锁技术可以有效地解决并行操作的一 致性问题,但也带来一些新的问题n死锁n活锁An Introduction to Database System8.4.1 活锁An Introduction t

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

当前位置:首页 > 行业资料 > 其它行业文档

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