《并发控制技术》PPT课件

《并发控制技术》PPT课件

ID:38829370

大小:363.82 KB

页数:38页

时间:2019-06-20

《并发控制技术》PPT课件_第1页
《并发控制技术》PPT课件_第2页
《并发控制技术》PPT课件_第3页
《并发控制技术》PPT课件_第4页
《并发控制技术》PPT课件_第5页
资源描述:

《《并发控制技术》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第八章 并发控制技术单用户和多用户系统数据库系统一般可以分为单用户系统和多用户系统。单用户系统在任何时刻只允许一个用户使用的数据库系统。多用户系统允许多个用户同时使用数据库的系统。事务的并发执行并行Vs串行基本比较并行事务会破坏数据库的一致性。串行事务效率低。并行的优点一个事务由不同的步骤组成,所涉及的系统资源也不同。这些步骤可以并发执行,以提高系统的吞吐量。系统中存在着周期不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少平均响应时间。并发控制的必要性对数据库的并

2、发操作可能导致下列问题:丢失修改(LostUpdate)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。T1T2读A=16读A=16A=A-1写回A=15A=A-1写回A=15并发控制的必要性不可重复读(Non-RepeatableRead)指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取的结果。具体的讲,不可重复读包括三种情况:事务T1读取某一数据后,事务T2对其作了修改,当事务T1再次读取该数据时,得到与前一次不同的值。事务T1按照一定条件从

3、数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按照相同条件读取数据时,发现某些记录神秘的消失了。事务T1按照一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按照相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称作幻影(PhantomRow)现象。并发控制的必要性T1T2读A=50读B=100求和=150读B=100B=B*2写回B=200读A=50读B=200求和=250并发控制的必要性T1T2select*fromSCwhereCNO=‘C01’and

4、SNO=‘S01’DeleteFromSCWhereCNO=‘C01’andSNO=‘S01’select*fromSCwhereCNO=‘C01’andSNO=‘S01’并发控制的必要性T1T2select*fromSCwhereCNO=‘C01’andSNO=‘S01’insertintoSCvalues(S01,C01,null)select*fromSCwhereCNO=‘C01’andSNO=‘S01’并发控制的必要性读“脏”数据(DirtyRead)是指事务T1修改某一数据,并将其写回磁盘,事务T2读

5、取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复为原值,T2读到的数据就与数据库中的不一致,则T2读到的数据就为“脏”数据。T1T2读C=100C=C*2写回C读C=200ROLLBACKC恢复为100并发控制封锁的定义封锁就是事务T在对某个数据对象如表、记录等操作之前,先向系统发出请求,对其加锁,从而对该数据对象有了一定的控制,在事务T释放它的锁之前,其他事务不能更新此数据对象。封锁是并发控制的一个非常重要的技术。并发控制封锁的类型排它锁(X锁,eXclusivelock):事务T对数据对象A加

6、上X锁,则只允许T读取和修改A,其它事务对A的任何封锁请求都不能成功(因而不能读取和修改R),直至T释放A上的X锁。共享锁(S锁,Sharelock):事务T对数据对象A加上S锁,则事务T可以读取但不能修改A,其它事务只能对A加S锁(因而可以读取A),而不能对A的加X锁(因而不能修改A),直到T释放A上的S锁。并发控制相容矩阵不相容请求相容请求并发控制一级封锁协议事务T在修改数据R之前必须对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失

7、修改,并保证事务T是可恢复的。在一级封锁协议中,如果仅仅是读数据而不对其进行修改,是不需要对其加锁的,因此它不能保证可重复读和不读“脏”数据。并发控制T1T2XLOCKA获得读A=16XLOCKAA=A-1写回A=15COMMITUNLOCKA等待等待等待等待获得XLOCKA读A=15A=A-1写回A=14COMMITUNLOCKA没有丢失修改并发控制二级锁协议二级锁协议是:一级锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。二级锁除了防止丢失修改,还可以进一步防止读“脏”数据。但由于读完后

8、即可释放S锁,所以不能保证可重复读。并发控制T1T2XLOCKC获得读C=100C=C*2写回C=200SLOCKCROLLBACKC恢复为100UNLOCKC等待等待等待获得SLOCKC读C=100COMMITUNLOCKC不读脏数据并发控制三级锁协议三级锁协议是:一级锁协议加上事务T在读取R之前必须对其加S锁,直到事务结束才释放。三级封锁协议除了防止丢失修改和读“脏”

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。