资源描述
第十一章:
1. 在数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性?
答:并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。保证事务的原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)
和持久性(Durability),这四个特性简称为 ACID 特性。
2. 并发操作可能产生哪几类数据不一致?用什么方法能避免各种不一致的情况?
答:可能产生的数据不一致有:丢失修改,不可重复读,读“脏”数据.
避免并发访问导致的数据不一致问题的主要技术有封锁、时间戳、乐观控制法和多版本并发控制等,而封锁是实现并发控制的常用技术。
3. 数据库的基本锁类型有哪几种?试述它们的含义?
答:排它锁(Exclusive Locks,X 锁)和共享锁(Share Locks,S 锁)
排它锁又称写锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A,其他任
何事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁。这就保证了其他事务在 T 释
放 A 上的锁之前不能再读取和修改 A。
共享锁又称读锁。若事务 T 对数据对象 A 加上 S 锁,则事务 T 可以读 A 但不能修改 A,
其他事务只能再对 A 加 S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁。这就保证了其他事
务可以读 A,但在 T 释放 A 上的 S 锁之前不能对 A 做任何修改。
4. 什么是三级封锁协议?事务的隔离级别都有哪些?
答:一级封锁协议是指,事务 T 在修改数据 R 之前必须先对其加 X 锁,直到事务结束才释放。
事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改,并保证事务 T 是可恢复的。
二级封锁协议是指,在一级封锁协议的基础上增加事务 T 在读取数据 R 之前必须先对其
加 S 锁,读完后即可释放 S 锁。二级封锁协议除了防止丢失修改,还可进一步防止读“脏”数据。
三级封锁协议是指,在一级封锁协议的基础上增加事务 T 在读取数据 R 之前必须先对其
加 S 锁,直到事务结束才释放。三级封锁协议除了防止丢失修改和读“脏”数据外,还可进一步防止了不可重复读。
事务的隔离级别:
READ UNCOMMITTED读取数据不需要加S锁,这样就不会跟被修改的数据上的X锁冲突,READ COMMITTED该级别通过指定语句不能读取其他事务已修改但是尚未提交的数据值,禁止执行脏读
REPEATABLE READ该级别包括READ COMMITTED,并且另外指定了在当前事务提交之前,其他任何事务均不可以修改或删除当前事务已读取的数据。
SERIALIZABLE该级别包括REPEATABLE READ,并增加了在事务完成之前,其他事务不能向事务已读取的范围插入新行的限制。
5. 为什么要引入意向锁?意向锁的含义是什么?
答:意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任
一结点加锁时,必须先对它的上层结点加意向锁。具有意向锁的多粒度封锁方法提高了系统的并发度,减少了加锁和解锁的开销, 己经在实际的数据库管理系统产品中得到广泛应用。
展开阅读全文