2.3 并发控制

并发控制还可以分为乐观并发控制和悲观并发控制,这两种控制思想是从“何时检测冲突”的角度来定义的。

乐观并发控制属于事后检测冲突的并发控制,通常分为以下3个阶段。

• 读阶段(Read Phase):事务维护一个读集合和一个写集合,并且将对对象的写操作存放到私有空间中。

• 有效性确认阶段(Validation Phase):在事务提交时,每个事务都需要检查自己的读集合和写集合,这两个集合记录了事务运行的历史信息,如果发现某个事务违反了可串行化原则,那么这个事务终止。

• 写阶段(Write Phase):在有效性确认之后,对事务在私有空间中的数据进行应用,事务提交成功。

悲观并发控制则在事先检测冲突,它在识别到冲突的操作后,就可以尝试阻塞冲突的一方,从而实现事务的冲突可串行化。例如两阶段锁技术就属于悲观并发控制的范畴,它在读取数据库对象时给对象加共享锁,而在修改数据库对象时对对象加排他锁,这样就能保证事务在并发的过程中不会出现各种异常现象。