一、前言:
数据库的并发操作通常会带来三个问题:丢失更新、读脏数据、不可重复读。解决这些问题就需要用到数据库的封锁机制进行控制,但封锁机制的引入又引起了一系列问题:性能下降、死锁等。
1、丢失更新:一个事务的更新覆盖了其他事务的更新结果。例如用户A把值从8改到了5,用户B把值从5改到了8,则用户A丢失了它的更新。
2、读脏数据:事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,事务T1由于某种原因被撤销,这时事务T1修改过的数据恢复原值,事务T2读到的数据就和数据库中的数据不一致,是错误的数据。又称“脏”数据。
3、不可重复读:事务T1读取数据后,事务T2执行了更新操作。而事务T1使用的仍然是更新前的值,造成了数据不一致性。
为了解决这些并发操作带来的问题。我们需要引入并发控制。主要方法是封锁技术。