你的位置:首页 > 软件开发 > Java > 事务并发会遇到的几个问题

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

发布时间:2016-04-20 16:00:09
一、事务并发会遇到的几个问题: 1)脏读 :两个事务同时操作同一数据,A事务对该数据进行了修改还没提交的时候,B事务访问了该条事务,并且使用了该数据,此时A事务回滚,那么B事务读到的就是脏数据。     比如事务1,修改了某个数据 ...

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

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

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

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

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

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

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

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

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

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

原标题:事务并发会遇到的几个问题

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录