并发事务问题 隔离级别

博客主要探讨数据库并发事务中因隔离性不同产生的一致性问题,包括丢失修改、脏读数据、不可重复读数据和幻影读。同时介绍了四种隔离级别,即未提交读、提交读、可重复读和可串行化,分析了各隔离级别可能出现的并发不一致问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了实现一致性的事务,在并发情况下的隔离性的不同会出现不同的结果

所以首先分析一下因为隔离性问题,而产生的不同的一致性问题

丢失修改


事务T1和T2都对数据库进行修改操作,T1修改的数据被T2给替换了,造成丢失修改;

脏读数据

在这里插入图片描述
T1修改数据库数据,T2是读数据。如果T1修改数据从50到100,但是修改失败,此时T2读取修改后的100数据就是错误的,读的是脏数据;

不可重复读数据

在这里插入图片描述
T1事务修改数据库数据,T2事务在修改数据之前读取。T2读取数据为50,然后T1修改数据为100,T2再次读取数据库数据为100,这时T2两次读取数据不一致,那么这就是不可重复读数据。

幻影读

在这里插入图片描述
T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。

隔离级别

根据以上因为隔离性的问题,造成的并发情况下数据的不一致性问题,所以分析一下到底有什么样的隔离性级别
在这里插入图片描述

未提交读(READ UNCOMMITTED)

事务中的修改,即使没有提交,对其它事务也是可见的

可能会出现的并发不一致性问题:脏读,不可重复度,幻影读;

提交读(READ COMMITTED)

一个事务只能读取已经提交的事务所做的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的。

可重复读(REPEATABLE READ)

保证在同一个事务中多次读取同样数据的结果是一样的。

可串行化(SERIALIZABLE)

强制事务串行执行。

需要加锁实现,而其它隔离级别通常不需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值