多事务运行并发问题
在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分类:
1. 第一类丢失更新:撤销一个事务,其他事务已提交的更新数据覆盖
2. 第二类丢失更新:一个事务覆盖另一个事务已提交的更新数据
3. 脏读:一个事务读到另一个事务未提交的数据
4. 虚读:一个事物读到另一个已提交的新插入数据
5. 不可重复读:事务读到另一个事务已提交的更新数据
下面对这几类并发问题进行详细介绍:
1. 第一类丢失更新
产生过程:两个事务更新同一数据,第一个事务被提交,另一个事务被撤销,会把第一个事务所做的更新也撤销,示意图如下所示:
2. 第二类丢失更新
产生过程:两个事务各自基于最初的查询结果提交数据,实例流程如下图所示:
3. 脏读
产生过程:事务二查询到事务一未提交数据,事务二根据此数据进行操作,事务一紧接着