spring事务隔离级别和数据库的隔离级别有什么不同,MVCC机制的坑

本文详细介绍了Spring事务隔离级别与数据库(以MySQL为例)隔离级别的概念和关系,解释了脏读、不可重复读和幻读的概念,并通过实例分析了MySQL的多版本并发控制(MVCC)机制如何解决这些问题。文章还讨论了MVCC在并发更新时可能出现的问题,如死锁,并强调了乐观锁在防止数据冲突中的作用。

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

spring事务隔离级别是什么,数据库隔离级别是什么,它们有什么关系。我来帮大家理一理。

其实非常简单,spring发送SQL请求和我们用的Navicat 写 set session transaction  isolation level  具体级别

 start transaction 

是一样的,实际上就是spring 使用了 MySQL提供的标准接口,说白了就是告诉MySQL 使用什么事务隔离级别而已。

 

脏读:一事务对数据进行了改更改,但未提交,另一事务可以读取到未提交的数据。如果第一个事务这时候回滚了,那么第二个事务就读到了脏数据。这种级别下读的是内存。
 

疑问1:脏读,为啥别人能看到我未提交的数据?

答: 因为修改是在内存中修改的,没有提交到文件系统上,也就是没有写到日志里。说白就是读取到了临时数据。

提交读:一个事务中发生了两次读操作,第一次读操作和第二次操作之间,另外一个事务对数据进行了修改并且提交,这时候两次读取的数据是不一致的。这种级别下能读取到其他事物提交的结果。 这种级别下修改操作读的是数据库的文件内容

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值