并发控制 课后答案-简述并发控制.doc

并发控制 课后答案-简述并发控制.doc

ID:57083134

大小:154.00 KB

页数:7页

时间:2020-08-01

并发控制 课后答案-简述并发控制.doc_第1页
并发控制 课后答案-简述并发控制.doc_第2页
并发控制 课后答案-简述并发控制.doc_第3页
并发控制 课后答案-简述并发控制.doc_第4页
并发控制 课后答案-简述并发控制.doc_第5页
资源描述:

《并发控制 课后答案-简述并发控制.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第八章并发控制习题解答和解析1.1.    在数据库中为什么要并发控制?答:数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。2.2.    并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。(1)丢失修改(LostUpdate)两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果

2、,导致T1的修改被丢失。(2)不可重复读(Non-RepeatableRead)不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。不可重复读包括三种情况:详见《概论》8.1(P266)。(3)读"脏"数据(DirtyRead)读"脏"数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为"脏"数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统

3、中可以采用时间戳方法来进行并发控制。3.3.    什么是封锁?答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。4.4.    基本的封锁类型有几种?试述它们的含义。答:基本的封锁类型有两种:排它锁(ExclusiveLocks,简称X锁)和共享锁(ShareLocks,简称S锁)。排它锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的

4、锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。5.如何用封锁机制保证数据的一致性?答:DBMS在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务T1在对A进行修改之前先对A执行XLock(A),即对A加X锁。这样,当T2请求对A加X锁时就被拒绝,T2只能等待T1释放A上的锁后才能获得对A的X锁,这时它读到的A是T1更新后的值,再按此新的A值

5、进行运算。这样就不会丢失T1的更新。       DBMS按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读"脏"数据等数据不一致性。 6.什么是封锁协议?不同级别的封锁协议的主要区别是什么?答:在运用封锁技术对数据加锁时,要约定一些规则。例如,在运用X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。这些约定或者规则称为封锁协议(lockingProtocol)。对封锁方式约定不同的规则,就形成了各种不同的封锁协议、不同级别的封锁协议,例如《概论》8.3中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要

6、申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。 7.不同封锁协议与系统一致性级别的关系是什么?答:不同的封锁协议对应不同的一致性级别。一级封锁协议可防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,对读数据是不加S锁的,所以它不能保证可重复读和不读"脏"数据。二级封锁协议除防止了丢失修改,还可进一步防止读"脏"数

7、据。在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读。在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束才释放封锁。所以三级封锁协议除防止了丢失修改和不读"脏"数据外,还进一步防止了不可重复读。下面的表格清楚地说明了封锁协议与系统一致性的关系。  X锁S锁一致性保证 操作结束释放事务结束释放操作结束释放事务结束释放不丢失修改不读"脏"数据可重复读一级封锁协议 √  √  二级封锁协议 √√ √√ 三级封锁协议 √ √√√√         8.

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

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

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