事务

原创 2016年06月01日 09:55:35
  • 事务的特性

    事务具备原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)4个属性,简称ACID。 下面对着4个属性分别进行说明:

  • 原子性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行。

  • 一致性:事务在完成时,必须使所有的数据保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性,事务结束时,所有的内部数据结构都应该是正确的。
  • 隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离。事务查看数据时数据所处的状态,要么是被另一个并发事务修改之前的状态,要么是被另一个并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。这种隔离方式也叫可串行性。
  • 持久性:事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。

    1. 事务隔离
      事务隔离意味着对于某一个正在运行的事务来说,好像系统中只有这一个事务,其他并发的事务都不存在一样。在大部分情况下很少使用完全隔离的事务。但不完全隔离的事务会带来如下一些问题:
  • 更新丢失:两个事务都企图去更新一行数据,导致事务抛出异常退出,两个事务的更新都白费了。

  • 脏数据:如果第二个应用程序使用了第一个应用程序修改过的数据,而这个数据处于未提交状态,这时就会发生脏读。第一个应用程序随后可能会请求回滚被修改的数据,从而导致第二个事务使用的数据被损坏,即所谓的“变脏”。
  • 不可重读:一个事务两次读同一行数据,可是这两次读到的数据不一样,就叫不可重读。如果一个事务在提交数据之前,另一个事务可以修改和删除这些数据,就会发生不可重读。
    -幻读:一个事务执行了两次查询,发现第二次查询结果比第一次查询多了一行,这可能是因为另一个事务在这两次查询之间插入了新行。

    针对由事务的不完全隔离所引起的上述问题,提出了一些隔离级别,用来防范这些问题。

    这里写图片描述

    在一个实际应用中,开发者经常不能确定使用什么样的隔离级别。太严厉的级别将降低并发事务的性能,但是不足够的隔离级别又会产生一些小的Bug,而这些Bug只会在系统重负荷(也就是并发严重时)的情况下才会出现。
    一般来说,读操作未提交(Read Uncommitted)是很危险的。一个事务的回滚或失败都会影响到另一个并行的事务,或者说在内存中留下和数据库中不一致的数据。这些数据可能会被另一个事务读取并提交到数据库中。这是完全不允许的。
    另外,大部分程序并不需要可串行化隔离(Serializable Isolation)。虽然,它不允许幻读,但一般来说,幻读并不是一个大问题。可串行化隔离需要很大的系统开支,很少有人在实际开发中使用这种事务隔离模式。
    现在留下来的可选的隔离级别是读操作已提交(Read Committed)和可重读(Repeatable Read),最安全的隔离级别为可重读隔离级别

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

分布式事务例子

  • 2017-09-29 10:45
  • 15.26MB
  • 下载

Spring事务管理(二)

原地址:http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html 事务的传播行为和隔离级别 大家在使用spring的注解式事务...

TCP-IP详解3:TCP事务协议

  • 2017-07-11 09:55
  • 10.24MB
  • 下载

spring事务几种传播方式

  • 2017-07-31 18:05
  • 30KB
  • 下载

Spring事务管理

Spring事务管理@(Spring)[spring, 事务管理, 事务, Spring]Spring事务管理 事务的基本概念 什么是事务 事务的特性 事务的隔离性不完善引发的问题 设置隔离级别解决读...

事务控制需要的jar

  • 2017-03-01 13:40
  • 1.74MB
  • 下载

注解版本声明事务小例子

  • 2017-07-20 18:24
  • 6.25MB
  • 下载

spring aop 通过获取代理对象实现事务切换

摘要:在项目中,当使用多数据源的时候,业务复杂的时候,会出现数据源A的方法里面嵌套调用数据源B的方法,这里面涉及到一个事务切换的问题,一般的方法没问题,根据通过aop注解在方法上通过加注解标识指定对应...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)