Spring事务隔离级别主要包含:默认、读未提交、读已提交、可重复读、串行化等5种Spring事务隔离级别@mikechen
DEFAULT (默认)
ISOLATION_DEFAULT: 这是一个PlatfromTransactionManager默认的隔离级别,一般情况下使用这种配置既可。
Spring事务隔离级别和MySQL事务的隔离级别是一致的,一般使用默认值,不需要进行设置。
另外四个与JDBC的隔离级别相对应,如下图所示:
READ_UNCOMMITTED (读未提交)
READ_UNCOMMITTED:这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读。
READ_COMMITTED (读已提交)
保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。
这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
REPEATABLE_READ (可重复读)
这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻像读,它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读。
SERIALIZABLE(串行化)
这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻像读。
Spring事务隔离级别总结
自上而下, 四种隔离级别由低到高(读未提交最低, 序列化最大), 隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》