其他分享
首页 > 其他分享> > 事务知识点汇总(纯理论)

事务知识点汇总(纯理论)

作者:互联网

问题背景

上次处理完事务问题后,我又想起来事务在spring中的传播属性已经不记得了,类似的概念性问题即便看过了也很容易忘(头疼.gif),所以把常见的事务问题整理了一下,记录在此。

什么是事务

事务是由一步或几步数据库操作序列组成的逻辑单元。这系列操作要么全部执行,要么全部放弃执行。
简单来说就是我们把一件事用多条sql语句表示,但是这件事要么是完成了,要么是失败了。事务就是保证这件事(多条sql语句)保持在同时成功或者失败的状态,不会出现中间状态,即成功了一半失败了一半。

事务的特性ACID

ACID即:Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)。
原子性: 确保工作单元内的所有操作都成功完成,否则所有操作将回滚到以前的状态。
一致性: 确保数据库正确地改变状态后,成功提交的事务。
隔离性: 使事务操作彼此独立的和透明的。事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
持久性: 确保提交的事务的结果或效果的系统出现故障的情况下仍然存在。

事务的并发读问题

注意: 幻读和不可重复读都是读取了另一条已经提交的事务,脏读读取的是未提交的事务;幻读读取的是批量数据,而不可重复读读取的是某一条数据。

事务的四大隔离级别

了解了事务的并发读问题,那么就需要了解如何应对这些问题。针对这些问题,我们有四种不同的解决方案(即四种事务的隔离级别)。不同事务隔离级别能够解决的数据并发问题的能力是不同的。

JDBC设置事务隔离级别

con. setTransactionIsolation(int level)
参数可选值如下:

在spring中事务的设置我截至目前还没有操作过,一直使用的默认配置

spring七个事务传播行为:

所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。
例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。Spring定义了七种传播行为:

spring中五个隔离级别:

spring事务管理器

理解:
Spring并不直接管理事务,而是提供了事务管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。
再者,使用Spring进行事务管理时,大多数都是采用声明式事务管理,此种方式对应用的影响最小,也是最符合非侵入式的轻量级容器的概念。

标签:知识点,事务,隔离,READ,汇总,PROPAGATION,当前,纯理论,级别
来源: https://blog.csdn.net/qq_36464947/article/details/101018813