第十二章

1.在数据库中为什么要并发控制?并发控制能保证事务的哪些特征?

数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。

并发控制可以保证事务的一致性和隔离性。

2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?

并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。

  1. 丢失修改(lost update ) 两个事务 Tl 和 T2 读入同一数据并修改,T2 提交的结果破坏了(覆盖了) Tl 提交的结果,导致 Tl 的修改被丢失。

  2. 不可重复读( Non 一 RepeatableRead ) 不可重复读是指事务 Tl 读取数据后,事务几执行更新操作,使 Tl 无法再现前一次读取结果。

  3. 读“脏”数据( Dirty Read ) 读“脏’数据是指事务 Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后, Tl 由于某种原因被撤销,这时 Tl 已修改过的数据恢复原值,几读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

最后更新于