事务四大特征:原子性,一致性,隔离性和持久性。 
1. 原子性(Atomicity)    一个原子事务要么完整执行,要么干脆不执行。这意味着,工作单元中的每项任务都必须正确执行。如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。如果所有任务都被成功执行,事务就会被提交,即对数据所作的修改将会是永久性的。2. 一致性(Consistency)    一致性代表了底层数据存储的完整性。它必须由事务系统和应用开发人员共同来保证。事务系统通过保证事务的原子性,隔离性和持久性来满足这一要求; 应用开发人员则需要保证数据库有适当的约束(主键,引用完整性等),并且工作单元中所实现的业务逻辑不会导致数据的不一致(即,数据预期所表达的现实业务情况不相一致)。例如,在一次转账过程中,从某一账户中扣除的金额必须与另一账户中存入的金额相等。3. 隔离性(Isolation)    隔离性意味着事务必须在不干扰其他进程或事务的前提下独立执行。换言之,在事务或工作单元执行完毕之前,其所访问的数据不能受系统其他部分的影响。4. 持久性(Durability)    持久性表示在某个事务的执行过程中,对数据所作的所有改动都必须在事务成功结束前保存至某种物理存储设备。这样可以保证,所作的修改在任何系统瘫痪时不至于丢失。

解决方案 »

  1.   

    我认为是这样的
    1:你的ACID的基础是事物的隔离性,没有事物的隔离数据无法实现ACID这样的操作,例如你在多事物中,事物之间的相互操作没有隔离的话,岂不是乱套了。
    2:事物的传播特性应该是事物嵌套情况下如何去处理业务,比如你多个复杂的业务相互调用,是在同一个事物当中呢,还是每个事物开启一个事物呢?这取决于你的业务,由你自己定义到底是开启哪种的传播特性,因为这关系到在嵌套事物中,事务失败回滚问题。
      

  2.   

    ACID 是在回答你“什么叫事务”,达到了什么要求才叫做“事务”。
    事务隔离则是通过常见的几种情况来说明“达到了什么样的要求时叫 不可重复读,或可重复读”。要知道以前没有这些概念,概念本身是抽象的,是需要 meta data 来解释的。对事务这个概念来说,这个meta data 就是 ACID。你看“道生一,一生二,二生三,三生万物”,你听得懂么?这些都是先基于某个原始的东西来说明一个概念,有了这个概念大家有了共识再讨论其它的具体操作。外国人就是把 “道生一,一生二,二生三,三生万物” 叫 meta data,它是用来解释和处理最原始的部分,之后你的配置和 API 是基于 meta data  解释之后的内容来工作的。
      

  3.   

    事务隔离则是通过常见的几种情况则先说明什么叫脏读,什么叫不可重复读,最后才进入正题说:保证不出现脏读就是 哪个事务隔离级别,保证不出现不可重复读就是哪个事务隔离级别。ACID 是在回答你“什么叫事务”,达到了这四个要求才叫做“事务”。