并发事务问题 隔离级别

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

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

丢失修改


事务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)

强制事务串行执行。

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

全部评论

相关推荐

笑死 不是哥们离校了我真要睡街了 加上还有几w的贷款 不接受我准备去当三和大神
梦想是成为七海千秋:没事,hr这下就有底气了,下次遇到一个不接受的就说,你看,人家这学历都接受了,你凭什么不接受
点赞 评论 收藏
分享
05-07 17:58
门头沟学院 Java
wuwuwuoow:1.简历字体有些怪怪的,用啥写的? 2.Redis 一主二从为什么能解决双写一致性? 3.乐观锁指的是 SQL 层面的库存判断?比如 stock > 0。个人认为这种不算乐观锁,更像是乐观锁的思想,写 SQL 避免不了悲观锁的 4.奖项证书如果不是 ACM,说实话没什么必要写 5.逻辑过期时间为什么能解决缓存击穿问题?逻辑过期指的是什么 其实也没什么多大要改的。海投吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务