zoukankan      html  css  js  c++  java
  • 【spring企业开发实战】事务并发会遇到的几个问题

    一、事务并发会遇到的几个问题:

        1)脏读 :两个事务同时操作同一数据,A事务对该数据进行了修改还没提交的时候,B事务访问了该条事务,并且使用了该数据,此时A事务回滚,那么B事务读到的就是脏数据。

          比如事务1,修改了某个数据              事务2,刚好访问了事务1修改后的数据

          此时事务1,回滚了操作                    事务2,读到还是回滚前的数据

        2) 不可重复读 :这种情况发生 在一个事务内多次读同一数据。A事务查询某条数据,该事务未结束时,B事务也访问同一数据并进行了修改。那么在A事务中的两 次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。

        事务1,查询某个数据                   事务2,修改了某个数据,提交

        事务1,再次查询这个数据

        这样事务1两次查询的数据不一样,称为不可重复读

      3)幻读 : 事务A在操作一堆数据的时候,事务B插入了一条数据,A事务再次查询,发现多了一条数据,像是幻觉。与不可重复读类似,不同的是一个是修改,一个是新增或者删除。

    Notice:在oracle中不会出现脏读的情况,为了防止读到更改数据(不可重复读),只需要对操作的数据加上“行级锁”,为了防止读取到新增数据( 幻读),必须加上“表级锁”,将整张表锁定!!!

     4)第一类丢失更新 :A,B 事务同时操作同一数据,A先对改数据进行了更改,B再次更改时失败然后回滚,把B更新的数据也回滚了。(事务撤销造成的撤销丢失)

       5)第二类丢失更新:A,B 事务同时操作同一数据,A先对改数据进行了更改,B再次更改并且提交,把B提交的数据给覆盖了。(事务提交造成的覆盖丢失)

    web开发过程中的问题总结
  • 相关阅读:
    ultraEdit使用utf8乱码的解决办法
    利用替换字符串的函数StringReplace删除字符串中指定的字符或字符串
    COBID,CanID,NodeID的不同
    随机生成一个10位的数字(来自大富翁)
    Delphi2010下,Unit aliases会影响到Code Insight功能?
    使用鼠标拖曳的方式移动、更改panel控件的大小
    将四个BYTE数值转换成IEEE754标准的浮点数
    判断shift,ctrl,alt键是否按下
    获取邮箱中的用户名
    IFM控制器中关于支线长度的说明
  • 原文地址:https://www.cnblogs.com/muwanqing/p/5413055.html
Copyright © 2011-2022 走看看