1 脏读脏写
客户端读取到未提交的数据,使用(读-已提交)隔离级别防止。可以由mvcc实现
客户端修改到未提交的数据,使用( 读-已提交)隔离级别防止。可以由mvcc实现
2读倾斜(不可重复读)
数据库为一个事务分配快照,相同数据会产生多个快照,事务只读取自己快照上的数据。
使用多版本控制(MVCC),防止客户端在不同时刻读取不同值,即事务只读取一致性快照。
3 更新丢失
(不可重复读)
多客户端并发修改处理数据库时,一个事务修改操作覆盖其它事务修改的数据,导致数据不一致。
使用多版本控制(MVCC)解决,但不可重复读
4写倾斜(可重复读)
当事务查询某条件,根据结果修改数据。但出现修改数据时,前提条件不存在(被其他事务修改影响)
解决要串行化加锁或使用乐观锁。锁定事务涉及的数据
5幻读
当事务查询到满足条件的多条数据时,进行统计汇总数据是,有其他事务插入数据也满足之前的条件条件时,
导致最终数据统计不一致。可以锁表或者使用范围锁。