Spring中事务的五大隔离级别
- 未提交读(Read Uncommitted): 允许脏读,也就是可能读取到其他会话中未提交事务修改的数据
- 脏读:A事务读取B事务尚未提交的数据,此时如果B事务发生错误并执行回滚操作,那么A事务读取到的数据就是脏数据。
- 提交读(Read Committed): 只能读到已经提交的数据。Oracle等多数数据库默认都是该级别(不可重复读)
- 可重复读(Repeated Read): 可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读,但innoDB解决了幻读。
- 串行读(Serializable): 完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞
- 使用数据库默认的隔离级别isolation=Isolation.DEFAULT
不同数据库的隔离级别(面试点)
- MySQL:mysql默认的事务处理级别是’REPATABLE-READ’,也就是可重复读
- Oracle: oracle数据库支持READ COMMITTED 和 SERIALIZABLE 俩种事务的隔离级别。默认系统事务隔离级别是READ COMMITTED,也就是读已提交
