数据库原理与应用(MySQL版) 第10章 事务与并发控制 习题参考答案.docx
第10章事务与并发控制习题参考答案
选择题
如果事务T获得了数据项A的排他锁,则其他事务对A
A.只能读不能写 B.只能写不能读
C.可以写也可以读 D.不能读也不能写
答:D
设事务T1和T2执行如图10-17所示的并发操作,这种并发操作存在的问题是
时间
事务T1
事务T2
t1
读A=100,B=10
t2
读A=100
计算A=A*2=200
写回A=200
t3
计算A+B=110
t4
读A=200,B=10
再次计算A+B=210
图10-17并发操作
A.丢失修改 B.不能重复读
C.读脏数据 D.产生幽灵数据
答:B
下列不属于事务特征的是
A.完整性 B.一致性
C.隔离性 D.原子性
答:A
事务一旦提交,其对数据库中数据的修改就是永久的,以后的故障不会对事务的操作结果产生任何影响。这个特性是事务的
A.原子性 B.一致性
隔离性 D.持久性
答:D
在多个事务并发执行时,如果事务T1对数据项A的修改覆盖了事务T2对数据项A的修改,这种现象称为
A.丢失修改 B.读脏数据
C.不可重复读 D.数据不一致
答:A
若事务T对数据项D已加了S锁,则其他事务对数据项D
A.可以加S锁,但不能加X锁
B.可以加X锁,但不能加S锁
C.可以加S锁,也可以加X锁
D.不能加任何锁
答:A
在数据库管理系统的三级封锁协议中,二级封锁协议的加锁要求是
A.读数据时不加锁,写数据是在事务开始时加X锁,事务完成后释放X锁
B.读数据时加S锁,读完即释放S锁;写数据时加X锁,写完即释放X锁
C.读数据时加S锁,读完即释放S锁;对写数据是在事务开始时加X锁,事务完成后释放X锁
D.在事务开始时即对要读、写的数据加锁,等事务结束后再释放全部锁
答:C
在数据库管理系统的三级封锁协议中,一级封锁协议能够解决的问题是
A.丢失修改 B.不可重复读
C.读脏数据 D.死锁
答:A
在多个事务并发执行时,如果并发控制措施不好,则可能会造成事务T1读了事务T2的“脏”数据。这里的“脏”数据是指
A.T1回滚前的数据 B.T1回滚后的数据
C.T2回滚前的数据 D.T2回滚后的数据
答:C
若系统中存在4个等待事务T0、T1、T2和T3,其中T0正等待被T1锁住的数据项A1,T1正等待被T2锁住的数据项A2,T2正等待被T3锁住的数据项A3,T3正等待被T0锁住的数据项A0。则此时系统所处的状态是
A.活锁 B.死锁
C.封锁 D.正常
答:B
简答题
什么是事务?它有哪些特性?每个特性的含义是什么?
答:事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元执行。一个事务内的所有语句作为一个整体,要么全部执行,要么全部不执行。
事务有原子性、一致性、隔离性和持久性四个特征。
原子性:事务的原子性是指事务是数据库的逻辑工作单位,事务中的操作,要么都做,要么都不做。
一致性:指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
隔离性:指数据库中一个事务的执行不能被其他事务干扰。
持久性:指事务一旦提交,则其对数据库中数据的改变就是永久的,以后的操作或故障不会对事务的操作结果产生任何影响。
什么是调度?它的作用是什么?
答:调度是事务中的操作的执行顺序,正确的调度可以保证并发事务的正确性。
什么是并发控制?它的目的是什么?
答:在多用户系统中,可能同时运行着多个事务。当系统中同时有多个事务运行时,特别是当这些事务使用同一段数据时,彼此之间就有可能产生相互干扰的情况。
并发控制的目的就是保证并发事务的ACID特性。
解释下列概念:
丢失修改。
读脏数据。
不可重复读。
答:丢失修改:是指两个事务T1和T2读入同一数据并进行修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被T2覆盖掉了。
读脏数据:指一个事务读了某个失败事务运行过程中的数据。
不可重复读:指事务T1读取数据后,事务T2执行了更新操作,修改了T1读取的数据,T1操作完数据后,又重新读取了同样的数据,但这次读完之后,当T1再对这些数据进行相同操作时,所得的结果与前一次不一样。
什么是两阶段锁?
答:两段锁是指所有的事务必须分为两个阶段对数据进行加锁和解锁,具体内容如下:
在对任何数据进行读写操作之前,首先要获得对该数据的封锁。
在释放一个封锁之后,事务不再申请和获得任何其他封锁。
什么是可串行化调度?可串行化的目的是什么?
答:多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,就称这种调度为可串行化的调度。
可串行性是并发事务正确性的准则。可