码迷,mamicode.com
首页 > 其他好文 > 详细

隔离级别与丢失更新

时间:2020-04-02 11:47:04      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:ali   serial   基于   更新记录   提交   读取   没有   commit   tab   

原文链接:https://www.jianshu.com/p/592b2cdbc589

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


作者:CS_Mervyn
链接:https://www.jianshu.com/p/592b2cdbc589
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

隔离级别与丢失更新

标签:ali   serial   基于   更新记录   提交   读取   没有   commit   tab   

原文地址:https://www.cnblogs.com/liushoudong/p/12618420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!