ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

并发 不同的隔离等级存在的问题

2021-06-15 21:31:40  阅读:159  来源: 互联网

标签:事务 隔离 Read 更新 并发 丢失 幻读 等级 读取


1.无事务隔离级别

则存在:第一类丢失更新、脏读、不可重复读、第二类丢失更新和幻读问题。


2.Read Uncommitted

存在:脏读、不可重复读、第二类丢失更新和幻读问题。


3. Read committed

存在:不可重复读、第二类丢失更新和幻读问题。


4. Repeatable Read

存在:幻读问题。


5.Serializable

不存在问题。

 

 

  • 第一类丢失更新
    撤销一个事务的时候,把其它事务已提交的更新数据覆盖了。这是完全没有事务隔离级别造成的。如果事务1被提交,另一个事务被撤销,那么会连同事务1所做的更新也被撤销。
  • 脏读(Dirty Read)
    如果一个事务对数据进行了更新,但事务还没有提交,另一个事务就可以“看到”该事务没有提交的更新结果。这样就造成的问题就是,如果第一个事务回滚,那么第二个事务在此之前所“看到”的数据就是一笔脏数据。
  • 不可重复读取(Non-Repeatable Read)
    不可重复读取是指同一个事务在整个事务过程中对同一笔数据进行读取,每次读取结果都不同。如果事务1在事务2的更新操作之前读取一次数据,在事务2的更新操作之后再读取同一笔数据一次,两次结果是不同的。所以Read Uncommitted也无法避免不可重复读取的问题。
  • 第二类丢失更新
    它和不可重复读本质上是同一类并发问题,通常将它看成不可重复读的特例。当两个或多个事务查询相同的记录,然后各自基于查询的结果更新记录时会造成第二类丢失更新问题。每个事务不知道其它事务的存在,最后一个事务对记录所做的更改将覆盖其它事务之前对该记录所做的更改。
  • 幻读(Phanton Read)
    幻读是指同样一个查询在整个事务过程中多次执行后,查询所得的结果集是不一样的。幻读针对的是多笔记录。在Read Uncommitted隔离级别下,不管事务2的插入操作是否提交,事务1在插入操作执行之前和之后执行相同的查询,取得的结果集是不同的,所以Read Uncommitted同样无法避免幻读。

 



作者:西安法律咨询服务平台与程序员
链接:https://www.jianshu.com/p/592b2cdbc589
 

标签:事务,隔离,Read,更新,并发,丢失,幻读,等级,读取
来源: https://blog.csdn.net/u013288190/article/details/117933407

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有