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)

    相关推荐

    • 如何解决Visual Studio 2005插件功能问题

      技术如何解决Visual Studio 2005插件功能问题这篇文章主要介绍了如何解决Visual Studio 2005插件功能问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让

      攻略 2021年12月3日
    • 如何理解MSSQL数据库后台进程

      技术如何理解MSSQL数据库后台进程本篇文章为大家展示了如何理解MSSQL数据库后台进程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。与Oracle数据库类似,微软数据库产品MS

      攻略 2021年11月29日
    • 如何避免Mysql的mysql-bin文件的坑

      技术如何避免Mysql的mysql-bin文件的坑这篇文章将为大家详细讲解有关如何避免Mysql的mysql-bin文件的坑,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

      攻略 2021年10月25日
    • 数据结构index是什么(数据库索引可以用hash实现吗)

      技术数据库中plan_hash_value有什么用这篇文章给大家分享的是有关数据库中plan_hash_value有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

      攻略 2021年12月13日
    • Windows中kafka zookeeper安装

      技术Windows中kafka zookeeper安装 Windows中kafka zookeeper安装Windows中kafka安装步骤 https://blog.csdn.net/qq_43641

      礼包 2021年12月1日
    • C++怎么正确使用线程

      技术C++怎么正确使用线程这篇文章主要介绍“C++怎么正确使用线程”,在日常操作中,相信很多人在C++怎么正确使用线程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么正确使用线程”

      攻略 2021年11月25日