数据库系统概论第11章并发控制.ppt
《数据库系统概论第11章并发控制.ppt》由会员分享,可在线阅读,更多相关《数据库系统概论第11章并发控制.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第第第1111章章章章 并发控制并发控制并发控制并发控制 11.1并发控制概述并发控制概述11.2封锁封锁 11.3封锁协议封锁协议 11.4活锁和死锁活锁和死锁 11.5并发调度的可串行性并发调度的可串行性 11.6两段锁协议两段锁协议 11.7封锁的粒度封锁的粒度18.1并发控制概述并发控制概述事务的并行事务的并行交叉并发方式交叉并发方式(单处理机系统单处理机系统)同时并发方式同时并发方式(多处理机系统多处理机系统)时时间间T1T2T1(1)T2(1)T2(2)T1(2)T1(3)T2(3)例如例如:时间时间T1(1)T2(1)T2(2)T1(2)T1(3)T2(3)T1T2串行方式串行
2、方式时时间间T1T2T1(1)T2(1)T2(2)T1(2)T1(3)T2(3)交叉并发方式交叉并发方式同时并发方式同时并发方式2并发控制机制并发控制机制为了保证事务的隔离性和数据库的为了保证事务的隔离性和数据库的一致性,数据库管理系统具有的对一致性,数据库管理系统具有的对并发操作进行正确调度的功能。并发操作进行正确调度的功能。例子例子1:飞机订票系统的两个事务:飞机订票系统的两个事务:(1)事务甲事务甲:读机票余额读机票余额A;卖出一张机票;卖出一张机票A=A-1;写回;写回A;(2)事务乙事务乙:读机票余额读机票余额A;卖出一张机票;卖出一张机票A=A-1;写回;写回A;事务甲事务甲事务乙
3、事务乙时时间间读读A=16读读A=16A=16-1写回写回A=15A=16-1写回写回A=15(1)丢失修改丢失修改(2)不可重复读不可重复读(3)读读“脏脏”数据数据数据库的不一致性数据库的不一致性:3例子例子2:时时间间T1T2读读A=50 读读B=100 求和求和=150读读B=100 B=2*B 写回写回B=200读读A=50 读读B=200 求和求和=250不可重复读不可重复读不可重复读不可重复读:(1)T1再次读取数据再次读取数据,得值不相同得值不相同;(2)T1再次读取数据再次读取数据,某些数据消失某些数据消失;(3)T1再次读取数据再次读取数据,多余数据出现多余数据出现;4例子
4、例子3:时时间间T1T2读读C=100 C=2*C 写回写回C=200读读C=200 rollback C恢复为恢复为100读读“脏脏”数据数据58.2封锁封锁封锁封锁:事务事务T在对某个数据对象操作之前在对某个数据对象操作之前,先向系统发出请先向系统发出请 求求,对其加锁对其加锁.加锁后事务加锁后事务T就对该就对该 数据对象有了一定数据对象有了一定 的控制的控制,在事务在事务T释放它的锁之前释放它的锁之前,其它的事务不能更其它的事务不能更 新此数据对象新此数据对象.封锁的类型封锁的类型:排它锁排它锁(Xlock)共享锁共享锁(Slock)排它锁排它锁(Xlock):若事务若事务T对数据对象对
5、数据对象A加上加上X锁锁,则允许则允许T 读取读取和和修改修改A,其他任何事务都其他任何事务都不能不能再对再对A 加任何类型的锁加任何类型的锁,直到直到T释放释放A上的上的X锁锁.共享锁共享锁(Slock):若事务若事务T对数据对象对数据对象A加上加上S锁锁,则允许则允许T 读取读取A,其他事务只其他事务只能能再对再对A加加S锁锁,不能不能加加X 锁锁,直到直到T释放释放A上的上的S锁锁.6X锁与锁与S锁的相容矩阵锁的相容矩阵:T1T2Xlock Slock -XlockSlock -NNYNYYYYY8.3封锁协议封锁协议封锁协议封锁协议:在对数据对象加锁时在对数据对象加锁时,约定的规则(如
6、何时申请约定的规则(如何时申请 X锁或锁或S锁、持锁时间、何时释放等)。锁、持锁时间、何时释放等)。常用的封锁协议常用的封锁协议:一级封锁协议一级封锁协议 二级封锁协议二级封锁协议 三级封锁协议三级封锁协议71.一级封锁协议一级封锁协议一级封锁协议一级封锁协议:事务事务T在修改数据在修改数据R之前必须先对其加之前必须先对其加X锁锁,直到事务结束才释放直到事务结束才释放.事务甲事务甲事务乙事务乙时时间间读读A=16读读A=16A=16-1写回写回A=15A=16-1写回写回A=15丢失修改丢失修改Xlock A 获得获得 读读A=16Xlock A 等待等待A=16-1写回写回A=15 comm
7、it unlock A事务甲事务甲事务乙事务乙时时间间获得获得 Xlock A 读读A=15A=15-1写回写回A=14 Commit unlock A没有丢失修改没有丢失修改8时时间间T1T2读读A=50 读读B=100 求和求和=150Xlock B 获得获得 读读B=100 B=2*B 写回写回B=200 commit unlock B读读A=50 读读B=200 求和求和=250不可重复读不可重复读时时间间T1T2读读A=50 读读B=100 求和求和=150读读B=100 B=2*B 写回写回B=200读读A=50 读读B=200 求和求和=250不可重复读不可重复读9时时间间T1T
8、2Xlock C 获得获得 读读C=100 C=2*C 写回写回C=200读读C=200 rollback C恢复为恢复为100 unlock C读读“脏脏”数据数据时时间间T1T2读读C=100 C=2*C 写回写回C=200读读C=200 rollback C恢复为恢复为100读读“脏脏”数据数据102.二级封锁协议二级封锁协议二级封锁协议二级封锁协议:一级封锁协议加上事务一级封锁协议加上事务T在读取数据在读取数据R之前必须先对之前必须先对 其加其加S锁,读完后即可释放锁,读完后即可释放S锁锁.时时间间T1T2Xlock C 获得获得 读读C=100 C=2*C 写回写回C=200读读C=
9、200 rollback C恢复为恢复为100 unlock C读读“脏脏”数据数据时时间间T1T2Xlock C 获得获得 读读C=100 C=2*C 写回写回C=200Slock C 等待等待 rollback C恢复为恢复为100 unlock C获得获得Slock C 读读 C=100 commit unlock C不读不读“脏脏”数据数据11时时间间T1T2读读A=50 读读B=100 求和求和=150Xlock B 获得获得 读读B=100 B=2*B 写回写回B=200 commit unlock B读读A=50 读读B=200 求和求和=250不可重复读不可重复读时时间间T1T
10、2Slock A Slock B 获得获得 读读A=50 读读B=100 求和求和=150 unlock A unlock B Xlock B 获得获得 读读B=100 B=2*B 写回写回B=200 commit unlock BSlock A Slock B 获得获得 读读A=50 读读B=200 求和求和=250 unlock A unlock B 不可重复读不可重复读123.三级封锁协议三级封锁协议三级封锁协议三级封锁协议:一级封锁协议加上事务一级封锁协议加上事务T在读取数据在读取数据R之前之前 必须先对其加必须先对其加S锁,直到事务结束才释放。锁,直到事务结束才释放。13时时间间T1
11、T2Slock A Slock B 获得获得 读读A=50 读读B=100 求和求和=150 unlock A unlock B Xlock B 获得获得 读读B=100 B=2*B 写回写回B=200 commit unlock BSlock A Slock B 获得获得 读读A=50 读读B=200 求和求和=250 unlock A unlock B 不可重复读不可重复读时时间间T1T2Slock A Slock B 获得获得 读读A=50 读读B=100 求和求和=150Xlock B 等待等待读读A=50 读读B=100 求和求和=150 commit unlock A unlock
12、 B 获得获得 读读B=100 B=2*B 写回写回B=200 commit unlock B可重复读可重复读14封锁协议封锁协议总结总结:什么操作需要申请封锁什么操作需要申请封锁何时释放锁何时释放锁X锁锁S锁锁一致性保证一致性保证操作操作结束结束释放释放操作操作结束结束释放释放事务事务结束结束释放释放事务事务结束结束释放释放一级封锁协议一级封锁协议二级封锁协议二级封锁协议三级封锁协议三级封锁协议不丢失不丢失 修修 改改不读脏不读脏数数 据据可重可重复读复读158.4 活锁和死锁活锁和死锁一、活锁一、活锁时时间间T1T2T3T4Lock R 获得获得 Lock R 等待等待Lock R 等待等
13、待Unlock R获得获得Unlock RLock R 等待等待获得获得永远等待永远等待解决活锁的方法解决活锁的方法:先来先服务策略先来先服务策略16二、死锁二、死锁时时间间T1T2Lock R1 获得获得Lock R2 获得获得Lock R2 等待等待Lock R1 等待等待解决死锁的方法解决死锁的方法:1.死锁的预防死锁的预防2.死锁的诊断与解除死锁的诊断与解除171.死锁的预防死锁的预防(1)一次封锁法一次封锁法-要求每个事务必须一次将所要使用的要求每个事务必须一次将所要使用的数数 据全部加锁据全部加锁,否则就不能继续执行否则就不能继续执行.时时间间T1T2Lock R1 获得获得Loc
14、k R2 获得获得Lock R2 等待等待Lock R1 等待等待Unlock R1Unlock R2获得获得 R1 R2 18(2)顺序封锁法顺序封锁法顺序封锁法顺序封锁法:预先对数据对象规定一个封锁顺序预先对数据对象规定一个封锁顺序,所有事务都按这所有事务都按这个个 顺序实行封锁顺序实行封锁.时时间间T1T2Lock R1 获得获得 Unlock R1Lock R2 获得获得 Lock R1 等待等待 获得获得 Lock R2 等待等待 .Unlock R2 获得获得 Unlock R1,R2对数据的封对数据的封锁顺序:锁顺序:R1、R2192.死锁的诊断与解除死锁的诊断与解除(1)超时诊
15、断法超时诊断法如果一个事务的等待时间超过了规定的时限如果一个事务的等待时间超过了规定的时限,就认为发就认为发生了死锁生了死锁.(2)等待图诊断法等待图诊断法并发控制子系统周期性地检测事务等待图并发控制子系统周期性地检测事务等待图,如果发现图如果发现图中存在回路中存在回路,则认为发生死锁则认为发生死锁.(3)撤销解除法撤销解除法选择一个处理死锁代价最小的事务选择一个处理死锁代价最小的事务,将其撤销将其撤销,释放此释放此事务持有的所有的锁事务持有的所有的锁,使其它事务得以继续运行下去使其它事务得以继续运行下去.208.5 并发调度的可串行性并发调度的可串行性定义定义:多个事务的并发执行是正确的多个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 系统 概论 11 并发 控制
限制150内