Spring事务隔离级别详解(5种事务隔离级别)

Spring事务隔离级别详解(5种事务隔离级别)-mikechen

Spring事务隔离级别主要包含:默认、读未提交、读已提交、可重复读、串行化等5种Spring事务隔离级别@mikechen

DEFAULT (默认)

ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,一般情况下使用这种配置既可。

Spring事务隔离级别和MySQL事务的隔离级别是一致的,一般使用默认值,不需要进行设置。

另外四个与JDBC的隔离级别相对应,如下图所示:

Spring事务隔离级别详解(5种事务隔离级别)-mikechen

 

READ_UNCOMMITTED (读未提交)

READ_UNCOMMITTED:这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。

这种隔离级别会产生脏读,不可重复读和幻像读。

 

READ_COMMITTED (读已提交)

保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。

这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

 

REPEATABLE_READ (可重复读)

这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻像读,它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读。

 

SERIALIZABLE(串行化)

这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻像读。

 

Spring事务隔离级别总结

自上而下, 四种隔离级别由低到高(读未提交最低, 序列化最大), 隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法