mysql事物传输方式_MySQL 事务 隔离级别 Spring传播行为

一、四大属性ACID

1、原子性(Atomicity):事务中的所有操作是一个整体,要么全部成功,要么失败回滚。(undo log --> mvcc)

2、一致性(Consistency):多个事务同时执行,其执行结果必须与按某一串行顺序执行的结果一致。

3、隔离性(Isolation):不受其他事务干扰的程度,事务执行的中间结果对其他事务必须是透明的。(四种隔离级别)。(锁)

4、持久性(Durability):事务对数据的影响是永久的。 (redo log)

二、四种隔离级别

第一种:读未提交(Read Uncommitted)

TxA: 1 update ----> 3 commit

TxB: 2 update ----> 4 rollback

TxA的更新丢失

第二种:读已提交(Read Committed)

TxA: 2 select ----> 4 commit

TxB: 1 update ----> 3 rollback

TxA读到的是脏数据

第三种:可重复读(Reaptalble Read )(MySQL默认隔离级别)

TxA: 1 select ----> 4 select

TxB: 2 update ----> 3 commit

TxA 两次读的值不一样

第四种:串行化(Serializable)

TxA: 1 select ----> 4 select

TxB: 2 insert ----> 3 commit

TxA查询到的更多记录

三、Spring事务传播行为(propagation)

传播行为,是指方法之间的调用,事务如何传递。

PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。默认项。

PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW–新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED–以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER–以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED–如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值