丢失数据
丢失数据: T1和T2两个事务都对一个数据进行修改, T1先修改, T2随后修改, T2的修改覆盖了T1的修改。简记为同时修改 。
读脏数据
读脏数据: T1对一个数据做了修改,T2 读取这一个数据。若T1执行 ROLLBACK 操作,则T2读取的结果和第一次的结果不一样。简记为读取失败的修改 。最简单的场景是修改完成后,紧接着查询检验结果。
不可重复读
不可重复读: T2读取一个数据, T1对该数据做了修改。如果T2再次读取这个数据,此时读取的结果和第一次读取的结果不同。简记为读时修改 ,重复读取的结果不一样。
幻影读
幻影读:T1 读取某个范围的数据, T2在这个范围内插入新的数据, T1再次读取这个范围的数
据,此时读取的结果和和第一次读取的结果不同。简记为 读时插入 ,重复读取的结果不一样。
解决方案
在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性问题。产生并发不一致性问题的主要原因是破坏了事务的隔离性。解决方法是通过 并发控制 来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别 ,让用户以一种更轻松的方式处理并发一致性问题。