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开发过程中的问题总结
  • 相关阅读:
    [原]OS X 10.9 Mavericks
    [原]iOS Makefile Template
    [原]Escape From the iOS Sanbox on Jailbreak Device
    串->串的表示和实现
    队列->队列的应用(银行业务模拟)
    队列->队列的表示和实现
    栈->栈与递归
    栈->栈的应用
    栈->栈的基本定义
    线性表->应用->一元多项式
  • 原文地址:https://www.cnblogs.com/muwanqing/p/5413055.html
Copyright © 2011-2022 走看看