spring事务的隔离级别属性深入理解

①、脏读(Dirty reads):一个事务A正在修改数据并修改好(假设刚好修改好,这个线程睡了一分钟),但是还没有提交事务,这个时候恰好另一个事务B正在读取该数据,那么它会读取到未提交事务A已经修改好的数据。但是A这个时候发生异常回滚,这个时候事务B就再次读取不到A修改好的数据。这样就为脏读。注意:事务A和事务B的隔离级别均为:Isolation.READ_UNCOMMITTE

②、不可重复读(Nonrepeatable read):一个事务A中执行相同的查询两次或两次以上,但是两次查询之间这个时间段,B操作恰好修改了这条数据,那么A事务中的第二次查询出来的数据与第一条不一样,这样的情况为不可重复读。

③、可重复读(Repeatable Read):事务A正在先后两次查询一条数据,刚好在查询出第一条数据后,另一个操作B修改了这条数据,那么A事务中的第二次查询出来的数据与第一条一样,并没发生变化。

④、幻读(Phantom read):幻读与不可重复读类似。在org.springframework.transaction.annotation.Transactional中的事务隔离级别Isolation中幻读和不可重复读均使用READ_COMMITTED设置。幻读着重于所查询出的数据的量的多少是否在一个事务中前后一致。

⑤、ISOLATION_SERIALIZABLE:最高的隔离级别,能够防止脏读、不可重复读、可重复读、幻读。它能够确保数据的原子性查询,即:这个事务在执行中时,其它对这个表的所有修改、新增、删除操作均再等待这个操作的完成.相对来说,这样的设置,性能降低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荆茗Scaler

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值