脏读、不可重复读、幻读

1
2
3
脏读:A事务读取到B事务未提交的数据,然后由于某种原因B事务进行了回滚,这样子A事务获取的数据就和回滚后的数据不一样了
不可重复读:事务a在同一个事务内多次读取同一个数据,可能事务b再此期间修改了这个数值,导致前后读取的数据值不一样
幻读:事务a在读取一段范围内的数据的时候,事务b往这个范围内写入了一条数据,事务a在以相同的条件查询数据的时候查出了多出来的一条数据

mysql四种隔离级别

1
2
3
4
5
6
7
8
9
10
11
12
13
Read Uncommitted(读取未提交内容)
在这个隔离级别中,所有的事务都可以看到其他未提交事务的执行结果。
这个隔离级别很少被用在实际应用场景中,因为她的效率比其他的隔离级别好多少,并且会造成脏读的情况。


Read Committed(读取提交内容)
这个级别所有的事务只能看见其余事务已经提交的结果

Repeatable Read(可重读)
同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上这个会造成幻读的情况

Serializable(可串行化)
这是最高的隔离级别,它让事务之间以串行的方式进行,让事务之间不可能互相冲突,从而解决幻读问题,不过这会导致数据库读取资源过慢,导致大量超时现象的发生