springboot事务隔离级别

springboot有五种隔离级别

1、DEFAULT:spring默认的事务隔离级别,以连接的数据库事务隔离级别为准;

2、READ_UNCOMMITTED:读未提交,该隔离级别事务可以看到其他事务中未提交的数据。因为可以读到别人未提交的数据,如果对方事务发生回滚,容易导致脏读。

3、READ_COMMITTED:读已提交,该隔离级别事务能读到已经提交事务的数据,因此不会有脏读的问题,但容易导致不同时间相同SQL查询中,结果可能不同,导致不可重复读。这种更多是针对更新数据的情况。

4、REPEATABLE_READ:可重复读,能确保同一事物多次查询结果一致,但可能在此期间内,同样的查询条件,查询到数据条数不一样,导致好像出现了幻觉,故而有幻读问题,这种更多出现在数据的新增/删除的情况。

5、SERIALIZABLE:串行化,最高的事务隔离级别,他会强制事务排序,能解决所有的脏读、不可重复读和幻读问题,本质其实就是事务排队执行,也导致效率低,真正使用的场景不多。

 

spring boot中事务隔离级别可以通过@Transactional中的isolation属性进行设置,如下所示:

 日常开发中,也不会特意去设置,通常都是按照数据库的默认事务隔离级别来,mysql的innodb是可重复读为默认的。

 

posted @ 2024-03-18 15:01  多多指教~  阅读(69)  评论(0编辑  收藏  举报