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,也就是读已提交