1. 在数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性?
2. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?
3. 什么是封锁?基本的封锁类型有几种?试述它们的含义。
4. 如何用封锁机制保证数据的一致性?
5. 什么是活锁?试述活锁的产生原因和解决方法。
6. 什么是死锁?请给出预防死锁的若干方法。
7. 请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁?
8. 什么样的并发调度是正确的调度?
9. 设T1、T2、T3是如下的三个事务,设A的初值为0.
T1:A:=A+2;
T2:A:=A*2;
T3:a:=A**2;
(1) 若这三个事务允许并发执行,则有多少种可能的正确结果,请列举出来。
(2) 请给出一个可串行化的调度,并给出执行结果。
(3) 请给出一个非串行化的调度,并给出执行结果。
(4) 若这三个事务都遵守两段封锁协议,请给出一个不产生死锁的可串行化调度。
(5) 若这三个事务都遵守两段封锁协议,请给出一个产生死锁的调度。
10. 今有三个事务的一个调度r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A),该调度是冲突可串行化的调度吗?为什么?
11. 试证明若并发事务遵守两段封锁协议,则对这些事务的并发调度是可串行化的。
12. 举例说明对并发事务的一个调度是可串行化的,而这些并发事务不一定遵守两段封锁协议。
13. 考虑如下的调度,说明这些调度集合之间的包含关系。
(1)正确的调度
(2)可串行化的调度
(3)遵循两阶段封锁(2PL)的调度
(4)串行调度
14. 考虑T1和T2两个事务。
T1:R(A);R(B);B=A+B;W(B)
T2: R(B);R(A);A=A+B;W(A)
(1) 改写T1和T2增加加锁操作和解锁操作,并要求遵循两阶段封锁协议;
(2) 说明T1和T2的执行是否会引起死锁,给出T1和T2的一个调度并说明原因
15. 为什么要引进意向锁?意向锁的含义是什么?
16. 试述常用的意向锁:IS锁 IX锁 SIX锁,给出这些锁的相容矩阵。

