数据库隔离级别

97 阅读1分钟

1 脏读脏写

客户端读取到未提交的数据,使用(读-已提交)隔离级别防止。可以由mvcc实现

客户端修改到未提交的数据,使用( 读-已提交)隔离级别防止。可以由mvcc实现

2读倾斜(不可重复读)

数据库为一个事务分配快照,相同数据会产生多个快照,事务只读取自己快照上的数据。

使用多版本控制(MVCC),防止客户端在不同时刻读取不同值,即事务只读取一致性快照。

3 更新丢失

(不可重复读)

多客户端并发修改处理数据库时,一个事务修改操作覆盖其它事务修改的数据,导致数据不一致。

使用多版本控制(MVCC)解决,但不可重复读

4写倾斜(可重复读)

当事务查询某条件,根据结果修改数据。但出现修改数据时,前提条件不存在(被其他事务修改影响)

解决要串行化加锁或使用乐观锁。锁定事务涉及的数据

5幻读

当事务查询到满足条件的多条数据时,进行统计汇总数据是,有其他事务插入数据也满足之前的条件条件时,

导致最终数据统计不一致。可以锁表或者使用范围锁。