Spring事务的隔离级别

本文详细解析了数据库事务的四种隔离级别:Serializable、REPEATABLEREAD、READCOMMITTED及ReadUncommitted,阐述了每种级别如何防止脏读、不可重复读及幻读等问题,并对比了它们之间的差异。

事务隔离级别定义的是事务在数据库读写方面的控制范围

1.Serializable

最严格的级别,事务串行执行,资源消耗最大。

2.REPEATABLE READ

保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。

3.READ COMMITTED

大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。

4.Read Uncommitted

保证了读取过程中不会读取到非法数据。

 

脏读:所谓的脏读,其实就是读到了别的事务回滚前的脏数据。比如事务B执行过程中修改了数据X,在未提交前,事务A读取了X,而事务B却回滚了,这样事务A就形成了脏读。

不可重复读:不可重复读字面含义已经很明了了,比如事务A首先读取了一条数据,然后执行逻辑的时候,事务B将这条数据改变了,然后事务A再次读取的时候,发现数据不匹配了,就是所谓的不可重复读了。

幻读:小的时候数手指,第一次数十10个,第二次数是11个,怎么回事?产生幻觉了?幻读也是这样子,事务A首先根据条件索引得到10条数据,然后事务B改变了数据库一条数据,导致也符合事务A当时的搜索条件,这样事务A再次搜索发现有11条数据了,就产生了幻读。

 

 dirty readsnon-repeatable readsphantom reads
SerializableNNN
REPEATABLE READNNY
READ COMMITTEDNYY
READ UNCOMMITTEDYYY

转载于:https://www.cnblogs.com/Taeyang/p/8384871.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值