美文网首页
spring事务传播机制

spring事务传播机制

作者: Wu杰语 | 来源:发表于2021-03-05 17:20 被阅读0次

理解spring事务,就要理解数据库ACID的Isolation,隔离性。

脏读、不可重复读、幻读

这几种场景都是针对多个事务并发处理的情况

  • 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。
  • 不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。
  • 幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

SQL的事务隔离级别

  • 未提交读(Read Uncommitted):一个事务能够读取到 别的事务中没有提交的更新数据。事务可以读取到未提交的数据,这也被称为脏读(dirty read)。所以这种级别很有可能读到脏数据,隔离级别最低。

  • 提交读(Read Committed):一个事务只能读取到别的事务提交的更新数据。一般我们提交读就可以了。只能读取到已经提交的数据。即解决了脏读,但未解决不可重复读。(oracle默认的)

  • 可重复读(Repeated Read):保证同一事务中先后执行的多次查询将返回同意结果,不受其他事务的影响。这种隔离级别可能出现幻读。(mysql默认的)

  • 序列化(Serializable):不允许事务并发执行,强制事务串行执行,就是在读取的每一行数据上都加上了锁,读写相互都会阻塞。这种隔离级别最高,是最安全的,性能最低,不会出现脏读,不可重复读,幻读,丢失更新。

数据库通过 set transaction-isolation xxx 设置事务隔离级别。

Spring事务传播

可以参见 https://blog.csdn.net/qq_17085835/article/details/84837253 的解释。

  • REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED)
    支持当前事务,如果没有事务会创建一个新的事务
  • SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS)
    支持当前事务,如果没有事务的话以非事务方式执行
  • MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY)
    支持当前事务,如果没有事务抛出异常
  • REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW)
    创建一个新的事务并挂起当前事务
  • NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED)
    以非事务方式执行,如果当前存在事务则将当前事务挂起
  • NEVER(TransactionDefinition.PROPAGATION_NEVER)
    以非事务方式进行,如果存在事务则抛出异常
  • NESTED(TransactionDefinition.PROPAGATION_NESTED)
    如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

小结

spring的事务传播机制,是解决函数调用的时候事务传播问题,理解清楚非常有必要。

相关文章

  • Spring 事务

    ** 但是Spring事务有自己的特点,也就是事务传播机制。** ** 所谓事务传播机制,也就是在事务在多个...

  • SSM spring 2

    1 Spring 事务实现方式、事务的传播机制、默认的事务类别 Spring事务的1+3种实现方式、7种传播行为、...

  • 问题记录

    面试题记录 spring spring事务传播机制和隔离级别? spring支持的事务类型? 什么是 Spring...

  • #30天专注成长计划# day18 Spring事务机制2-事务

    Spring事务机制传播主要由TransactionDefinition完成,在TransactionDefini...

  • 有关Spring事务,看这一篇就足够了

    本文将按照声明式事务的五个特性进行介绍: 事务传播机制 事务隔离机制 只读 事务超时 回滚规则 Spring事务传...

  • 十六、spring事务之事务传播机制和隔离级别

    Spring事务传播行为 运用Spring事务,必须要深入理解它的传播机制,否则会遇到各种意想不到的坑,Sprin...

  • 2、spring事物的传播机制与隔离级别

    Spring事务传播行为 运用Spring事务,必须要深入理解它的传播机制,否则会遇到各种意想不到的坑,Sprin...

  • Spring事务传播机制

    开发中有多个事务方法嵌套调用时,就涉及到了 Spring 的事务传播机制。 下面梳理一下 7 种传播机制的含义,做...

  • Spring事务传播机制

    传播性行为分为以下几种 PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务...

  • Spring事务传播机制

    在TransactionDefinition接口中定义了七个事务传播行为。先说最常用的三个 PROPAGATION...

网友评论

      本文标题:spring事务传播机制

      本文链接:https://www.haomeiwen.com/subject/xeokqltx.html