https://www.nowcoder.com/share/jump/34126941733592781353

Spring事务的隔离级别是为了解决多个事务并发执行时的数据一致性问题,即防止由于多个事务对同一数据的并发操作而导致的数据冲突或异常。数据库的事务隔离级别通过控制事务间的可见性和操作权限,解决以下常见并发问题:

1. 脏读(Dirty Read)

一个事务可以读取到另一个未提交事务的修改数据。如果该数据随后被回滚,则第一个事务读取到的就是无效数据。

示例问题

• 事务A修改了一条记录的值,但未提交;

• 事务B读取了这个值;

• 如果事务A回滚,事务B读取的值就成了“脏数据”。

解决:通过隔离级别避免未提交的数据被读取。

2. 不可重复读(Non-Repeatable Read)

同一事务中多次读取同一数据时,结果不一致,通常是因为另一个事务在期间修改并提交了数据。

示例问题

• 事务A第一次读取某一记录;

• 事务B修改了这条记录并提交;

• 事务A再次读取时,发现数据与第一次读取的不同。

解决:锁住正在读取的数据,防止其他事务修改。

3. 幻读(Phantom Read)

事务中两次查询同一条件的数据集时,第二次的结果集不同,通常是因为其他事务新增或删除了数据。

示例问题