1. 读未提交
即可以读取其他事务未提交的事务的数据
后果: 导致脏读,即读取的数据不是真正的数据,因为另一未提交的事务还有可能修改
2. 读已提交
读取其他事务已经提交的数据, 解决了脏读的问题
后果: 不可重复读,第一次获取到数据和第二次读取的数据不一致,扣款的例子,第一次获取余额,下一次余额被其他事务修改了,第二次获取到的数据和第一次不一致
3. 可重复读
在读取数据时不允许其他的事务修改被读取的数据,解决了不可重复读的问题,但是插入操作没有限制
后果:导致幻读,第一次看到的数据时一条,但是后面再看是两条,因为插入了数据,数据量不对
4. 序列化
所有事务排队一个一个执行,解决幻读,隔离级别最好
缺点:效率太低
下图为Spring源码中枚举的隔离级别