Spring事务知识点(总结)

技术Spring事务知识点(总结) Spring事务知识点(总结)什么是事务
答:既是把操作一次数据库的这个操作当成是一个事务,把这个行为抽象了。
例如:查询一次user表的所有内容叫一次事务。事务的4

春季交易知识点(总结)

什么是交易?

答:这种一次操作数据库的操作被认为是一个事务,这种行为是抽象的。

例如,一次查询用户表的所有内容称为事务。

交易的四大特征(ACID):

?原子性:事务中的操作要么全部成功执行,要么全部不成功。

?一致性:事务执行后,数据库状态与其他业务规则一致。例如,在转账业务的情况下,无论交易是否成功执行,参与转账的两个账户的余额总和都应保持不变。

?隔离:每个事务独立运行。在并发环境中,并发事务相互隔离,互不影响。

?持久性:一旦提交事务,数据库中的数据必须永久保存。

事务的4个隔离级别:

通过传输系统进行分析:

读取_未提交

读取但未提交,即一个事务从另一个事务中读取未提交的数据。在此隔离级别,将发生“脏读”。下表

交易保证金

交易提取

交易开始。

-

-

交易开始

-

b .查询交易余额(10元)

-

b拆除10元(0元)。

一次查询交易余额(0元)。

-

-

取消(10元)

一笔交易保证金在10元(10元)。

-

交易提交(更新余额:10元)。

-

正常情况下,交易A和B执行后,账户余额应该是20元,但在T5时刻,交易A查询的余额是0元,因为读取了交易B的未提交数据,也就是读取了“脏”数据。

READ _ COMMITTED

在这种隔离级别下,可以有效避免“脏读”。虽然解决了不可重复读取的问题,但在这种隔离级别下无法避免。在READ_COMMITTED隔离级别下,可能会出现表13-2所示的场景。下表

处理查询

交易提取

交易开始。

-

-

交易开始

-

b .查询交易余额(10元)

一次交易询价(10元)

ext-align: center">----事务B取出10元(0元)----事务B提交(更新余额:0元)事务A查询(0元)----事务A提交----

事务A执行了两次余额查询,但第一次查询得到的余额是10元,第二次查询得到的余额为0元,这就是不可重复读取的问题。

  • REPEATABLE_READ

    可重复读级别是保证在事务处理过程中多次读取同一个数据时的值始终是一致的。可重复读取是通过在事务开启后不允许其他事务对当前记录进行修改操作实现的。
    这个隔离级别避免了“脏读”和不可重复读的问题,但是有可能会出现“幻读”。“幻读”场景的出现。如下表

    事务A查询 事务B存款款
    事务A开始 ----
    ---- 事务B开始
    事务A查询 ----
    ---- 事务B存入10元
    ---- 事务B提交
    事务A查询 ----
    事务A提交 ----

    在事务A中,同一个事务多次获取交易记录,发现第二次获取交易记录的结果中多出了一笔存款记录——事务B发生的存款操作,对事务A来说,好像是出现了幻觉一样,即“幻读”。

  • SERIALIZABLE

    顺序读是最严格的事务隔离级别。它要求所有的事务排队依序执行,即事务只能一个接一个地处理,不能并发执行。

  • Spring还有一种默认既是根据数据的事务来决定自己的事务

  • 4种事务隔离级别从上往下,级别越高,并发性越差,但安全性越来越高。

    事务隔离级别 脏读 重复读 幻读
    READ_UNCOMMITTED 允许 允许 允许
    READ_COMMITTED 不允许 允许 允许
    REPEATABLE_READ 不允许 不允许 允许
    SERIALIZABLE 不允许 不允许 不允许
  • 事务的7中传播途径

    答:事务传播行为是用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的时候。

    举例子:

    • 首先查询剩余余额算成一个事务

    • 接着定义取款事务

      取款之前先调用查询事务

      这个过程就叫事务的传播

  • 内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/52957.html

    (0)

    相关推荐

    • Java中遍历ConcurrentHashMap的四种方式分别是什么

      技术Java中遍历ConcurrentHashMap的四种方式分别是什么本篇文章给大家分享的是有关Java中遍历ConcurrentHashMap的四种方式分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完

      攻略 2021年12月8日
    • PHP中怎样获取目录中的文件名

      技术PHP中怎样获取目录中的文件名PHP中怎样获取目录中的文件名,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们来看一下PHP中怎样去获取目录下的文件相关

      攻略 2021年11月2日
    • Prometheus 查询语言 PromQL 的 CPU 使用率计算方法

      技术Prometheus 查询语言 PromQL 的 CPU 使用率计算方法 Prometheus 查询语言 PromQL 的 CPU 使用率计算方法Prometheus 查询语言 PromQL 的 C

      礼包 2021年11月26日
    • eclipse swing的使用教程详细(swingwork的工作模式)

      技术怎么分析SwingWorker与Swing程序这篇文章给大家介绍怎么分析SwingWorker与Swing程序,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。某些人一拍脑袋的事,让我有机会跟Swi

      攻略 2021年12月24日
    • 怎么理解游戏的Draw Calls

      技术怎么理解游戏的Draw Calls这篇文章主要讲解了“怎么理解游戏的Draw Calls”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解游戏的Draw Call

      攻略 2021年11月1日
    • spark运行模式(spark的主要功能是什么)

      技术Spark2.4.0有什么功能这篇文章给大家分享的是有关Spark2.4.0有什么功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SparkCore 和 SQL 增加了Barrier E

      攻略 2021年12月16日