不可重复读和可重复读的理解

本文深入探讨了数据库事务隔离级别中的不可重复读与可重复读概念。通过具体例子,阐述了当一个事务内多次读取同一数据时,由于其他事务的并发操作导致数据变化,是否能读取到相同数据的区别。不可重复读情况下,数据会被其他事务更改,而可重复读则会使用快照数据,避免这种情况发生,但可能会遇到幻读的问题。

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

4165335-9df7fade8d5df82d.png
image.png

1、 不可重复读:

同一个事务中:
id=10行, 字段c1, 第一次查询 c1=0;
id=10行, 字段c1, 第二次查询 c1=1;

因为在第二次查询, 另外一个事务修改了c1=1,且事务提交。

2、 可重复读:

同一个事务中:
id=10行, 字段c1, 第一次查询 c1=0;
id=10行, 字段c1, 第二次查询 c1=0;

无论id=10被读了多少次, c1=0

即便是第二次查询之前,有另外的事务修改c1=1,也不会读到。

但是却可能幻读, 因为查询范围内插入新行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值