数据库数据脏读幻读不可重复度的解决

事务的隔离级别

要想解决数据的的脏读幻读和不可重复读,首先要了解事务的隔离级别

事务的原则

一致性
隔离性
持久性
原子性

一致性

当执行失败,所有的修改都会恢复到修改之前的状态。

隔离性

在对修改的数据提交之前,对其他事务不可见。

持久性

通俗的讲就是保存到数据库永久存储(感觉是滴)。

原子性

任何执行过程中的失败,都将导致操作的失败。

数据库的读取问题

脏读:读取到尚未提交的数据。
不可重复读:前后多次读取,数据内容不一致。
幻读:前后多次读取数据总量不一致。

这里的幻读和不可重复度有点不好理解,具体的区别是:
对应不同的操作:
不可重复度:insert update
幻读:insert delete

解决方案

脏读:------修改时加排他锁 读取时加共享锁
不可重复度:------读取时加共享锁 写数据时加排他锁
幻读:------范围锁------锁定检索范围为只读
在这里插入图片描述事务传播行为
在这里插入图片描述

  • PROPAGATION_REQUIRED(必须有事务,这是默认值)

如果存在一个事务,则加入到当前事务。如果没有事务则开启一个新的事务。

  • PROPAGATION_REQUIRES_NEW(必须有新的)

总是开启一个新的事务。如果存在一个事务,则将这个存在的事务挂起,再来一个新的。

  • PROPAGATION_SUPPORTS(支持有事务)

如果存在一个事务,则加入到当前事务。如果没有事务则非事务运行。

  • PROPAGATION_NOT_SUPPORTED(不支持有事务)

总是非事务地执行,并挂起任何存在的事务。

  • PROPAGATION_MANDATORY(强制有事务,自己还不负责创建)

如果存在一个事务,则加入到当前事务。如果没有事务,则抛出异常。

  • PROPAGATION_NEVER(强制不要事务,自己还不负责挂起):

总是非事务地执行,如果存在一个活动事务,则抛出异常。

  • PROPAGATION_NESTED(嵌套事务)

如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务, 则开启一个新的事
务。
内层事务依赖于外层事务。外层事务失败时,会回滚内层事务所做的动作。
而内层事务操作失败并不会引起外层事务的回滚。
只读事务

  • isReadOnly:配置事务是否是只读事务
  • 事务超时

TIMEOUT_DEFAULT 事务的超时时间,需要底层数据库支持才能使用此配置,-1代表无限制。
事务传播行为指的就是当一个业务方法【被】 另一个业务方法调用时,应该如何进行事务控制。
总结:Spring中的事务控制主要就是通过这三个API实现的
PlatformTransactionManager 负责事务的管理,他是个接口,其子类负责具体工作
TransactionDefinition 定义了事务的一些相关参数
TransactionStatus 代表事务运行的一个实时状态
可以简单的理解三者的关系:事务管理器通过读取事务定义参数进行事务管理,然后会产生一系列的事务状态

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介: 课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程。对于难以理解的知识点,全部用画图+实战的方式讲解。 第一部分:彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景和事例来讲解。 第二部分:实战讲数据库事务的6中并发异常:回滚丢失、覆盖丢失、、不可重复、MVCC精讲。 第三部分:彻底搞清楚4种事务隔离级别:READ_UNCOMMITTED 未提交隔离级别、READ_COMMITTED 已提交隔离级别、REPEATABLE_READ 可重复度隔离级别、SERIALIZABLE 序列化隔离级别 第四部分:彻底搞清楚MySQL的各种锁:行锁、表锁、共享锁、排它锁、Next-Key锁、间隙锁、X锁、S锁、IS锁、IX锁、死锁、索引与锁、意向锁等。 第五部分:彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED分布式事务的理论基础:RPC定理、BASE理论、XA协议都是什么,原理是什么,有什么关联关系 第六部分:分布式事务的5种解决方案原理和优缺点:2PC两阶段提交法、3PC三阶段提交法、TCC事务补偿、异步确保策略、最大努力通知策略 第七部分:阿里巴巴分布式事务框架Seata:历经多年双十一,微服务分布式事务框架,用一个Nacos+Spring Cloud+Seta+MySql的微服务项目,实战讲解阿里的分布式事务技术,深入理解和学习Seata的AT模式、TCC模式、SAGA模式。 课程资料: 课程附带配套2个项目源码72页高清PDF课件一份阿里巴巴seata-1.1.0源码一份阿里巴巴seata-server安装包一份

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值