zoukankan      html  css  js  c++  java
  • 赃读、不可重复读 和 幻读

    三种读法的产生原因:都是由于并发访问导致数据发生了变化

    1.脏读(读取未提交的数据)

      事务A正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中;此时事务B也访问这个数据,并且使用了这个数据。

    2.不可重复读(前后多次读取,发现数据内容不一致)

      事务A在执行读取操作,由于事务A比较大,前后读取完同一条数据可能需要经历很长的时间。当事务A读取完一条数据;随后事件B执行了更改操作,将之前的数据进行了修改;当事务A第二次读取这串数据,发现此次读取的数据内容跟之前不同了,也就是数据不重复了。

      事务A 事务B
    1 开始事务  
    2 第一次读取数据,小明年龄为20  
    3   开始事务
    4 其他操作  
    5   更改小明年龄为30
    6   提交事务
    7 第二次读取数据,此时小明年龄已为30  
    备注 按照正常逻辑,事务A前后两次取到的数据应该一致

    3.幻读(前后多次读取,发现数据总量不一致)

      事务A在执行读取操作,需要进行两次统计数据的总量,前一次查询完数据总量后;此时事务B执行了新增数据总量的操作,并且提交;事件A进行第二次读取数据的总量,发现跟第一次统计的数量不同,就像产生了幻觉一样,平白无故的多了几条数据。

      事务A 事务B
    1 开始事务  
    2 第一次查询,假设数据总量为100条  
    3   开始事务
    4 其他操作  
    5   新增加100条数据
    6   提交事务
    7 第二次查询,发现数据总量已为200条  
    备注 按照正常逻辑,事务A前后两次取到的数据应该一致

    注意:

      不可重复读的重点是修改:同样的条件,你读取过的数据,再次读取出来发现值不一样了。

      幻读的重点在于新增或者删除:同样的条件,第 1 次和第 2 次读出来的记录数不一样。

  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/blue-tea/p/11815047.html
Copyright © 2011-2022 走看看