事务的特点、隔离性和传播行为

特点:

原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)
原子性是基础,隔离性是手段,一致性是约束,而持久性才是我们的目的

原子性:

事务是数据库的逻辑工作单位,事务中包含的各操作要么都完成,要么都不完成
(要么一起成功,要么一起失败)

一致性:

事务的一致性是指数据库中的数据在事务操作前后都必须满足业务规则约束。
比如A转账给B,那么转账前后,AB的账户金额应该是一致的。

隔离性:

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执
行的各个事务之间不能相互干扰。
(设置不同的隔离级别,互相干扰的程度会不同)

持久性:

事务一旦提交,结果便是永久性的,即使发生宕机,仍然可以依靠事务日志完成数据的持久性。

事务的隔离级别:

脏读:当一个事务读取另一个事务未提交的内容,之后由于另一个事务出现了异常回滚了事务,结果造成读取的数据不一致。	
不可重复读:指一个事务多次读取同一数据,而另一个事务多次对数据进行了修改的操作,这样就导致了第一个事务每次读取的数据不一样,
幻读:当事务一对整张表的数据进行操作时对其进行了新增行,而另一个事务对其进行了删除行,而这时事务一本身对其进行了新增行然而发现并没有对其新增行而产生了幻觉

脏读与不可重复读的区别:

脏读是对没有提交的数据进行查询,不可重复读是对已经提交的数据进行的查询

不可重复读与幻读的区别:

不可重复读针对的时update操作,幻读一般是insert和delete操作

事务的隔离级别就是用来解决脏读、不可重复读和幻读问题。

事务的隔离级别一般有四种:

READ_UNCOMMITTED 读未提交:能读取还未提交的事务,不能解决脏读、不可重复度和幻读
READ_COMMITTED   读写提交:只能读取已经提交的事务,能解决脏读,不能解决不可重复读和幻读,一般使用此隔离级别
REPEATABLE_READ  可重复读:当一个事务读取这个数据时会对其进行加锁处理,防止其他事务对数据进行修改。重复读取(REPEATABLE_READ)的意思,读取了一条数据,这个事务不结束,别的事务就不可以改这条记录,这样就解决了脏读、不可重复读的问题,但是幻读的问题还是无法解决
SERLALIZABLE 	 可串行化:最高的事务隔离级别,不管多少事务,挨个运行完一个事务的所有子事务之后才可以执行另外一个事务里面的所有子事务,这样就解决了脏读、不可重复读和幻读的问题了
对于Oracle数据库默认的隔离级别为读写提交,MySQL数据库则是可重复读

事务的传播特性:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。

1.PROPAGATION_REQUIRED  如果当前方法存在一个事务,则将该方法置于同一个事物中,如果之前不存在事务,则另新开启一个事物(delete ,insert update)
2.PROPAGATION_SUPPORTS 如果当前方法存在一个事务,则将该方法置于同一个事物中,如果之前不存在事务,则进行非事务执行(select)
3.PROPAGATION_MANDATORY 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
4.PROPAGATION_REQUIRES_NEW 使用PROPAGATION_REQUIRES_NEW,需要使用 JtaTransactionManager作为事务管理器。 它会开启一个新的事务。如果一个事务已经存在,则先将这个存在的事务挂起。
5.PROPAGATION_NOT_SUPPORTED PROPAGATION_NOT_SUPPORTED 总是非事务地执行,并挂起任何存在的事务。使用PROPAGATION_NOT_SUPPORTED,也需要使用JtaTransactionManager作为事务管理器。
6.PROPAGATION_NEVER 总是非事务地执行,如果存在一个活动事务,则抛出异常。
7.PROPAGATION_NESTED 如果一个活动的事务存在,则运行在一个嵌套的事务中。 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

历史难

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值