数据库及spring事务隔离级别与传播机制

数据库事务隔离机制:

Read Uncommitted:最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务未提交的结果。所有的并发事务问题都会发生。

Read Committed只有在事务提交后,其更新结果才会被其他事务看见。解决脏读问题。

Repeated Read:在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。可以解决脏读、不可重复读。

Serialization:事务串行化执行,隔离级别最高,牺牲了系统的并发性。可以解决并发事务的所有问题。通常,在工程实践中,为了性能的考虑会对隔离性进行折中。

脏读:一个事务的处理过程读取了另一个还没有提交的事务;
不可重复读:一个事务范围内多次查询得到了不同的结果,因为查询间隔导致被另一个事务修改并提交 更新update 操作
虚读(幻读):“当事务A要对数据表中某个字段的所有值进修改操作,此时有一个事务是插入一条记录 并提交给数据库,当提交事务A 的用户再次查看时就会发现有一行数据未被修改,其实是事务B刚刚添加进去的”  这就是幻读 插入insert操作(或者delete操作)

Spring隔离级别:

1、ISOLOCATION_DEFAULT:  数据库默认级别

2、ISOLOCATION_READ_UNCOMMITTED: 允许读取未提交的读, 可能导致脏读,不可重复读,幻读

3、ISOLOCATION_READ_COMMITTED:  允许读取已提交的读,可能导致不可重复读,幻读

4、ISOLOCATION_REPEATABLE_READ : 不能能更新另一个事务修改单尚未提交(回滚)的数据,可能引起幻读

5、ISOLOCATION_SERIALIZABLE: 序列执行效率低

 

Spring传播级别:

1、PROPERGATION_MANDATORY: 方法必须运行在一个事务中,不存在事务则抛出异常

2、PROPERGATION_NESTED:  存在事务则运行在嵌套事务中,不存在则创建一个事务

3、PROPERGATION_NEVER: 当前方法不能运行在事务中,存在事务则抛出异常

4、PROPERGATION_NOT_SUPPORT: 当前存在事务则将其 挂起

5、PROPERGATION_REQUIRED: 不存在事务则创建一个事务

6、PROPERGATION_REQUIRES_NEW:  新建一个自己的事务,不论当前是否存在事务

7、PROPERGATION_SUPPORT: 存在事务则加入,不存在也可以

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值