事务相关知识

一、什么是事务?

事务是数据库操作最基本单元,逻辑上一组操作,要么都成功,如果有一个失败所有操作都失败。

二、事务的四大特性(ACID)

1、Atomic原子性

事务必须是一个原子的操作序列单元,事务中包含的各项操作在一次执行过程中,要么全部执行成功,要么全部不执行,任何一项失败,整个事务回滚,只有全部都执行成功,整个事务才算成功。(一个事务操作不可分隔,都成功或都失败

2、Consistency一致性

事务的执行不能破坏数据库数据的完整性和一致性,事务在执行之前和之后,数据库都必须处于一致性状态

3、Isolation隔离性

在并发环境中,并发的事务是相互隔离的,一个事务的执行不能被其他事务干扰。即不同的事务并发操纵相同的数据时,每个事务都有各自完整的数据空间,即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能相互干扰。

事务有特性为隔离性,多事务操作之间不会产生影响。不考虑隔离性产生很多问题
(1)有三个读问题:脏读、不可重复读、虚(幻)读
(2)脏读:一个未提交事务读取到另一个未提交事务的数据 (未提交)
(3)不可重复读:一个未提交事务读取到另一提交事务修改数据 (修改数据,读多次修改后的数据)
(4)虚读:一个未提交事务读取到另一提交事务添加数据 (数据库中记录的添加删除,幻读一样)
解决:通过设置事务隔离级别,解决读问题
SQL中的4个事务隔离级别:/ 从低到高

(1)读未提交 允许脏读。如果一个事务正在处理某一数据,并对其进行了更新,但同时尚未完成事务,因此事务没有提交,与此同时,允许另一个事务也能够访问该数据。例如A将变量n从0累加到10才提交事务,此时B可能读到n变量从0到10之间的所有中间值。
2)读已提交
允许不可重复读。只允许读到已经提交的数据。即事务A在将n从0累加到10的过程中,B无法看到n的中间值,之中只能看到10。同时有事务C进行从10到20的累加,此时B在同一个事务内再次读时,读到的是20。
(3)可重复读
允许幻读。保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻时是一致的。禁止脏读、不可重复读。幻读即同样的事务操作,在前后两个时间段内执行对同一个数据项的读取,可能出现不一致的结果。保证B在同一个事务内,多次读取n的值,读到的都是初始值0。幻读,就是不同事务,读到的n的数据可能是0,可能10,可能是20
(4)串行化
最严格的事务,要求所有事务被串行执行,不能并发执行。 如果不对事务进行并发控制,我们看看数据库并发操作是会有那些异常情形
(1)一类丢失更新:两个事物读同一数据,一个修改字段1,一个修改字段2,后提交的恢复了先提交修改的字段。
(2)二类丢失更新:两个事物读同一数据,都修改同一字段,后提交的覆盖了先提交的修改。
(3)脏读:读到了未提交的值,万一该事物回滚,则产生脏读。
(4)不可重复读:两个查询之间,被另外一个事务修改了数据的内容,产生内容的不一致。
(5)幻读:两个查询之间,被另外一个事务插入或删除了记录,产生结果集的不一致。
在这里插入图片描述

4、Durability持久性

持久性(durability):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中对应数据的状态变更就应该是永久性的。 即使发生系统崩溃或机器宕机,只要数据库能够重新启动,那么一定能够将其恢复到事务成功结束时的状态。

三、分布式事务

分布式事务与分布式锁的区别: 分布式锁解决的是分布式资源抢占的问题;分布式事务和本地事务是解决流程化提交问题。

本地事务是指仅操作单一事务资源的、不需要全局事务管理器进行协调的事务。
本地事务是一种最基础的事务解决方案,只适用于单个服务使用单个数据源的场景。

分布式事务指事务的操作位于不同的节点上,因此需要服务与服务之间远程协作才能完成事务操作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务(多体应用)。
在这里插入图片描述

   解决分布式事务问题,需要一些分布式系统的基础知识作为理论指导。

CAP定理 1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。这三个指标不可能同时做到。这个结论就叫做CAP 定理。

Consistency(一致性) Availability(可用性) Partition tolerance (分区容错性)

四、Spring事务传播机制

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值