数据库课件:第7讲 数据库的并发控制与恢复技术.ppt

上传人(卖家):罗嗣辉 文档编号:2040562 上传时间:2022-01-19 格式:PPT 页数:25 大小:547.50KB
下载 相关 举报
数据库课件:第7讲 数据库的并发控制与恢复技术.ppt_第1页
第1页 / 共25页
数据库课件:第7讲 数据库的并发控制与恢复技术.ppt_第2页
第2页 / 共25页
数据库课件:第7讲 数据库的并发控制与恢复技术.ppt_第3页
第3页 / 共25页
数据库课件:第7讲 数据库的并发控制与恢复技术.ppt_第4页
第4页 / 共25页
数据库课件:第7讲 数据库的并发控制与恢复技术.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、1第第7讲讲 数据库的并发控制与恢复技术数据库的并发控制与恢复技术思考以下问题思考以下问题: 1. 多用户同时访问(并发操作)数据多用户同时访问(并发操作)数据库会产生什么问题?库会产生什么问题? 2. 如何进行并发控制?并发控制又会如何进行并发控制?并发控制又会带来什么新问题?如何解决?带来什么新问题?如何解决? 3. 数据库系统可能出现的故障有哪些?数据库系统可能出现的故障有哪些?数据库的恢复技术又有哪些?数据库的恢复技术又有哪些?2一一. 并发操作产生的问题并发操作产生的问题丢失修改丢失修改 两个事务两个事务T1和和T2读入同一数据并进行读入同一数据并进行修改,修改,T2提交的结果破坏了

2、提交的结果破坏了T1提交的提交的结果,导致结果,导致T1的修改被丢失。的修改被丢失。事务是用户定义的一个数据库操作序事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,列,这些操作要么全做要么全不做,是一个不可分割的工作单位。是一个不可分割的工作单位。3一一. 并发操作产生的问题并发操作产生的问题不可重复读不可重复读 事务事务T1读取数据后,事务读取数据后,事务T2执行更新执行更新操作,使操作,使T1无法再现前一次读取结果。无法再现前一次读取结果。读读“脏脏”数据数据 事务事务T1修改某一数据,并将其写回磁盘,修改某一数据,并将其写回磁盘,事务事务T2读取同一数据后,读取同一数据后

3、,T1由于某种由于某种原因被撤销,原因被撤销,T2读到的数据就与数据库读到的数据就与数据库中的数据不一致,则中的数据不一致,则T2读到的数据就为读到的数据就为脏数据,也就是说不正确的数据。脏数据,也就是说不正确的数据。4T1T2T1T2T1T21) 读读A=20 1) 读读A=50 读读B=100求和求和=150 1) 读读C=100CC*2写回写回C 2) 读读A=203) AA-1写回写回A=19 2) 读读B=100BB*2写回写回B=2002) 读读C=2004)AA-1写回写回A=19(A少减一少减一次次)3) 读读A=50 读读B=200 和和=250(验算不对验算不对) 3) R

4、OLLBACKC恢复为恢复为100(错误的错误的C值已读出值已读出) (a)丢失修改丢失修改 (b)不可重复读不可重复读 (c)读读“脏脏”数据数据 5一一. 并发操作产生的问题并发操作产生的问题事务的特征(事务的特征(ACID)原子性(原子性(Atomicity)一致性(一致性(Consistency)隔离性(隔离性(Isolation)持续性或永久性(持续性或永久性(Durability)事务特性遭破坏的原因事务特性遭破坏的原因 多个事务并行执行时,不同事务的多个事务并行执行时,不同事务的操作交叉执行操作交叉执行 事务在运行过程中被强行停止事务在运行过程中被强行停止6一一. 并发操作产生的

5、问题并发操作产生的问题在在SQL语言中,定义事务的语句有语言中,定义事务的语句有三条:三条: BEGIN TRANSACTION; COMMIT; ROLLBACK TRANSACTION ;7二二. 数据库的并发控制数据库的并发控制数据库的并发控制就是控制数据库,防数据库的并发控制就是控制数据库,防止多用户并发使用数据库时造成数据错止多用户并发使用数据库时造成数据错误和程序运行错误,保证数据的完整性。误和程序运行错误,保证数据的完整性。 封锁机制是并发控制的重要手段。封锁封锁机制是并发控制的重要手段。封锁是使事务对它要操作的数据有一定的控是使事务对它要操作的数据有一定的控制能力。制能力。8二

6、二. 数据库的并发控制数据库的并发控制 封锁具有封锁具有3个环节个环节 申请加锁,即事务在操作前要对它申请加锁,即事务在操作前要对它将使用的数据提出加锁请求;将使用的数据提出加锁请求; 获得锁,即当条件成熟时,系统允获得锁,即当条件成熟时,系统允许事务对数据加锁,从而事务获得许事务对数据加锁,从而事务获得数据的控制权;数据的控制权; 释放锁,即完成操作后事务放弃数释放锁,即完成操作后事务放弃数据的控制权。据的控制权。9二二. 数据库的并发控制数据库的并发控制 锁的类型锁的类型 排它锁(排它锁(Exclusive Locks,简称,简称X锁),锁),也称为独占锁或写锁。一旦事务也称为独占锁或写锁

7、。一旦事务T对数对数据对象据对象A加上排它锁(加上排它锁(X锁),则只允许锁),则只允许T读取和修改读取和修改A,其他任何事务既不能读,其他任何事务既不能读取和修改取和修改A,也不能再对,也不能再对A加任何类型的加任何类型的锁,直到锁,直到T释放释放A上的锁为止。上的锁为止。 共享锁(共享锁(Share Locks,简称,简称S锁),又锁),又称读锁。如果事务称读锁。如果事务T对数据对象对数据对象A加上共加上共享锁(享锁(S锁),其他事务只能再对锁),其他事务只能再对A加加S锁,不能加锁,不能加X锁,直到事务锁,直到事务T释放释放A上的上的S锁为止。锁为止。10二二. 数据库的并发控制数据库的

8、并发控制 封锁协议封锁协议 在对数据对象加锁时,需要约定一些在对数据对象加锁时,需要约定一些规则,例如,何时申请规则,例如,何时申请X锁或锁或S锁、持锁、持锁时间、何时释放等,这些规则称为锁时间、何时释放等,这些规则称为封锁协议。封锁协议。11二二. 数据库的并发控制数据库的并发控制 一级封锁协议一级封锁协议 事务事务T在修改数据之前必须先对其加在修改数据之前必须先对其加X锁,直到事务结束才释放。锁,直到事务结束才释放。 作用:可有效地防止丢失修改,但不能作用:可有效地防止丢失修改,但不能保证可重复读和不读保证可重复读和不读“脏脏”数据。数据。 12事务事务1时间时间事务事务2读读A16t1t

9、2读读A16AA1写回写回A=15t3t4A=A-1写回写回A15事务事务1时间时间事务事务2XLOCK A读读A16t1t2XLOCK A等待等待AA1写回写回A=15COMMITUNLOCK At3t4XLOCK A读读A15AA1写回写回A14COMMITUNLOCK A举例:举例:13二二. 数据库的并发控制数据库的并发控制 二级封锁协议二级封锁协议 事务事务T对要修改数据必须先加对要修改数据必须先加X锁,直锁,直到事务结束才释放到事务结束才释放X锁;锁; 对要读取的数据必须先加对要读取的数据必须先加S锁,读完后锁,读完后即可释放即可释放S锁。锁。 作用:不仅能够防止丢失修改,而且防作

10、用:不仅能够防止丢失修改,而且防止读止读“脏脏”数据,但不能保证可重复读。数据,但不能保证可重复读。14举例:举例:事务事务1时间时间事务事务2读读B100B=B+100写回写回B200t1t2读读B200ROLLBACKB恢复为恢复为100t3t4继续使用继续使用B200事务事务1时间时间事务事务2XLOCK B读读B100BB100写回写回B200t1t2SLOCK B等待等待ROLLBACKB恢复为恢复为100UNLOCK Bt3t4SLOCK B读读B1002级封锁协议防止了读级封锁协议防止了读“脏脏”数据的发生,在读数据时,数据的发生,在读数据时,还可能产生不可重复读的不一致性,这时

11、需要还可能产生不可重复读的不一致性,这时需要3级封锁协级封锁协议议15二二. 数据库的并发控制数据库的并发控制 三级封锁协议三级封锁协议 事务事务T在读取数据之前必须先对其加在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。锁,直到事务结束后才释放所有锁。作用:不但防止了丢失修改和不读作用:不但防止了丢失修改和不读“脏脏”数据,而且防止了不可重复读。数据,而且防止了不可重复读。 16举例:举例:事务事务1时间时间事务事务2SLOCK C读读C50显示显示C50UNLOCK Ct1t2XLOCK C读读C50C=C*2写

12、回写回C100COMMITUNLOCK CSLOCK C读读C100显示显示C100t3事务事务1时间时间事务事务2SLOCK C读读C50显示显示C50t1t2XLOCK C等待等待读读C50显示显示C50COMMITUNLOCK Ct3t4XLOCK C读读C50CC*2写回写回C10017二二. 数据库的并发控制数据库的并发控制 不同级别的封锁协议不同级别的封锁协议 X锁锁S锁锁一致性保证一致性保证 操作操作结束结束释放释放事务事务结束结束释放释放操作操作结束结束释放释放事务事务结束结束释放释放不丢不丢失失修改修改不读不读“脏脏”数据数据可重可重复读复读一级协一级协议议 二级协二级协议议

13、 三级协三级协议议 18三三. 封锁出现的问题及解决方法封锁出现的问题及解决方法 活锁 在多个事务请求对同一数据封锁时,总在多个事务请求对同一数据封锁时,总是使某一用户等待的情况称为活锁。是使某一用户等待的情况称为活锁。 解决活锁的方法是采用先来先服务的方法,解决活锁的方法是采用先来先服务的方法,即对要求封锁数据的事务排队,使前面即对要求封锁数据的事务排队,使前面的事务先获得数据的封锁权。的事务先获得数据的封锁权。19三三. 封锁出现的问题及解决方法封锁出现的问题及解决方法 死锁 多事务交错等待的僵持局面称为死锁。多事务交错等待的僵持局面称为死锁。 解决死锁有两类方法:解决死锁有两类方法: 一

14、是采用一定措施来预防死锁的发生;一是采用一定措施来预防死锁的发生; 二是采用一定手段定期诊断系统中有无二是采用一定手段定期诊断系统中有无死锁,若有则解除之。死锁,若有则解除之。20 活锁活锁T1:LOCK R 成功成功T2:LOCK R 等待等待T3:LOCK R 等待等待T1:UNLOCK RT3:LOCK R 成功成功(T2等待)等待)T4:LOCK R 等待等待T3:UNLOCK RT4:LOCK R 成功成功.T2永远等待永远等待T1:LOCK A 成功成功T2:LOCK B 成功成功T1:LOCK B 等待等待T2: LOCK A 等待等待.T1、T2相互等待相互等待 死锁死锁21三

15、三. 封锁出现的问题及解决方法封锁出现的问题及解决方法 诊断死锁的方法诊断死锁的方法 超时法或事务等待图法超时法或事务等待图法 解除死锁的方法解除死锁的方法 通常是选择一个处理死锁代价最小的事通常是选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有务,将其撤销,释放此事务持有的所有的锁,使其他事务得以继续运行下去。的锁,使其他事务得以继续运行下去。同时,对撤销的事务所执行的数据修改同时,对撤销的事务所执行的数据修改操作加以恢复。操作加以恢复。22三三. 封锁出现的问题及解决方法封锁出现的问题及解决方法 预防死锁的方法预防死锁的方法1. 一次封锁法:要求每个事务必须一一次封锁法:要求

16、每个事务必须一次将所有要使用的数据全部加锁,次将所有要使用的数据全部加锁,否则该事务不能继续执行。否则该事务不能继续执行。2. 顺序封锁法:预先对数据对象规定顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个一个封锁顺序,所有事务都按这个顺序实行封锁。顺序实行封锁。 23三三. 封锁出现的问题及解决方法封锁出现的问题及解决方法 预防死锁的方法预防死锁的方法3. 两段锁协议:两段锁协议:(1) 在对任何数据进行在对任何数据进行读、写操作之前,首先要申请并获读、写操作之前,首先要申请并获得对该数据的封锁得对该数据的封锁; (2) 在释放一个在释放一个封锁之后,事务不再申请并获得对封锁之后

17、,事务不再申请并获得对该数据的封锁。该数据的封锁。24四四. 数据库恢复技术 故障的种类故障的种类 事务内部的故障事务内部的故障 事务内部的故障有的是可以通过事务程序本身发现的,但是事务内部的故障有的是可以通过事务程序本身发现的,但是更多的则是非预期的,它们不能由事务处理程序处理。例如更多的则是非预期的,它们不能由事务处理程序处理。例如运算溢出、并发事务发生死锁而被选中撤消该事务、违反了运算溢出、并发事务发生死锁而被选中撤消该事务、违反了某些完整性限制等。某些完整性限制等。 系统故障系统故障系统故障是指造成系统停止运转的任何事件,从而使得系统系统故障是指造成系统停止运转的任何事件,从而使得系统

18、必须重新启动。必须重新启动。 介质故障介质故障介质故障指外存故障,例如磁盘损坏、磁头碰撞,瞬时磁场介质故障指外存故障,例如磁盘损坏、磁头碰撞,瞬时磁场干扰等。干扰等。 计算机病毒计算机病毒计算机病毒是一种人为的故障或破坏。计算机病毒是一种人为的故障或破坏。 用户操作错误用户操作错误由于用户有意或无意的操作也可能删除数据库中的有用的数由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。据或加入错误的数据,这同样会造成一些潜在的故障。25四四. 数据库恢复技术数据恢复的实现技术数据恢复的实现技术1.数据转储数据转储 (1) 静态转储和动态转储。静态转

19、储和动态转储。 (2) 海量转储和增量转储。海量转储和增量转储。2. 登记日志文件(登记日志文件(Logging) (1) 日志文件的格式和内容。日志文件的格式和内容。 日志文件是用来记录对数据库的更新操作的文件。日志文件是用来记录对数据库的更新操作的文件。 (2) 日志文件的作用。日志文件的作用。日志文件的主要用于数据库恢复。日志文件的主要用于数据库恢复。 当数据库文件毁坏后,可重新装入后援副本把数当数据库文件毁坏后,可重新装入后援副本把数据库恢复到转储结束时刻的正确状态,再利用日据库恢复到转储结束时刻的正确状态,再利用日志文件,把已完成的事务进行重做处理。志文件,把已完成的事务进行重做处理。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(数据库课件:第7讲 数据库的并发控制与恢复技术.ppt)为本站会员(罗嗣辉)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|