`

事务概念笔记

阅读更多

 

   1、事务必需满足ACID(原子性、一致性、隔离性和持久性)特性,缺一不可

  • 原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做;
  • 一致性(Consistency):在事务执行前数据库的数据处于正确的状态,而事务执行完成后数据库的数据还是处于正确的状态,即数据完整性约束没有被破坏;如银行转帐,A转帐给B,必须保证A的钱一定转给B,一定不会出现A的钱转了但B没收到,否则数据库的数据就处于不一致(不正确)的状态。
  • 隔离性(Isolation):并发事务执行之间无影响,在一个事务内部的操作对其他事务是不产生影响,这需要事务隔离级别来指定隔离性;
  • 持久性(Durability):事务一旦执行成功,它对数据库的数据的改变必须是永久的,不会因比如遇到系统故障或断电造成数据不一致或丢失。

    2、应用开发中经常会遇到的事务问题:

  • 丢失更新:两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的;
  • 脏读:一个事务看到了另一个事务未提交的更新数据;
  • 不可重复读:在同一事务中,多次读取同一数据却返回不同的结果;也就是有其他事务更改了这些数据;
  • 幻读:一个事务在执行过程中读取到了另一个事务已提交的插入数据;即在第一个事务开始时读取到一批数据,但此后另一个事务又插入了新数据并提交,此时第一个事务又读取这批数据但发现多了一条,即好像发生幻觉一样。

     3标准SQL规范中定义了四种隔离级别:

  • 未提交读(Read Uncommitted:最低隔离级别,一个事务能读取到别的事务未提交的更新数据,很不安全,可能出现丢失更新、脏读、不可重复读、幻读;
  • 提交读(Read Committed:一个事务能读取到别的事务提交的更新数据,不能看到未提交的更新数据,不可能出现丢失更新、脏读,但可能出现不可重复读、幻读;
  • 可重复读(Repeatable Read:保证同一事务中先后执行的多次查询将返回同一结果,不受其他事务影响,不可能出现丢失更新、脏读、不可重复读,但可能出现幻读;
  • 序列化(Serializable:最高隔离级别,不允许事务并发执行,而必须串行化执行,最安全,不可能出现更新、脏读、不可重复读、幻读。

      注: 隔离级别越高,数据库事务并发执行性能越差,能处理的操作越少。因此在实际项目开发中为了考虑并发性能一般使用《提交读》隔离级别,它能避免丢失更新和脏读,尽管不可重复读和幻读不能避免,但可以在可能出现的场合使用《悲观锁》或《乐观锁》来解决这些问题。

 

     4、事务类型:

  • 本地事务:就是普通事务,能保证单台数据库上的操作的ACID,被限定在一台数据库上;
  • 分布式事务:涉及两个或多个数据库源的事务,即跨越多台同类或异类数据库的事务(由每台数据库的本地事务组成的),分布式事务旨在保证这些本地事务的所有操作的ACID,使事务可以跨越多台数据库;

      5、Spring的事务传播行为类型

事务传播行为类型

说明

PROPAGATION_REQUIRED

如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。

PROPAGATION_SUPPORTS

支持当前事务,如果当前没有事务,就以非事务方式执行。

PROPAGATION_MANDATORY

使用当前的事务如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW

新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED

以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER

以非事务方式执行,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED

如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

       

       当使用PROPAGATION_NESTED时,底层的数据源必须基于JDBC 3.0,并且实现者需要支持保存点事务机制。

 

分享到:
评论

相关推荐

    分布式事务学习笔记

    ### 分布式事务学习笔记知识点详解 #### 一、什么是分布式事务 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单来说,一次大的操作由不同...

    新概念笔记\新概念第二册笔记

    - **用法**: “private” 通常用来描述属于个人的东西或者只与个人相关的事务。 - **衍生词**: privacy n. 隐私;privatelife n. 私生活 - **例句**: "It's my privacy."(这是我的隐私。) - **对比词汇**: ...

    《数据库系统概念》笔记、部分课后答案优质博客链接

    总之,《数据库系统概念》笔记提供了关于数据库体系结构、数据模型、数据库设计、数据存储和查询、事务管理、数据挖掘分析等核心概念的详细介绍和实践指导。通过这些知识点,读者可以系统地学习和掌握数据库系统的...

    spring hibernate 事务管理学习笔记(二)

    在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...

    新东方 新概念 笔记 第02册.pdf

    ### 新东方新概念笔记第二册知识点总结 #### 核心知识点概述 本章节主要围绕《新概念英语》第二册的第一课展开,通过一系列词汇和表达的学习来帮助学习者理解并运用英语进行有效的交流。课程中重点讲解了一些核心...

    辛星笔记之InnoDB事务

    ### 辛星笔记之InnoDB事务知识点解析 #### 第一节:概述 ##### 简介 - **事务(Transaction)定义**: 在数据库系统中,事务是作为一个逻辑工作单元的一系列操作,它能够保证数据库从一种一致状态转换到另一种一致...

    韩顺平oracle视频笔记四(事务)

    【标题】:“韩顺平oracle视频笔记四(事务)”主要涵盖了Oracle数据库系统中的事务管理这一核心主题。在Oracle数据库中,事务是数据库操作的基本单位,它确保了数据的一致性和完整性。本视频笔记可能详细讲解了事务...

    东大数据库系统概念 期末+笔记.zip

    东北大学提供的这份学习资料,包括期末复习题和笔记,是基于第六版的《数据库系统概念》一书以及课程教学PPT,为学生提供了一个全面的学习资源。 首先,我们要理解数据库系统的概念。数据库是一个有组织地存储数据...

    SQL SERVER 事务处理学习笔记

    理解这些概念对于SQL Server用户至关重要,因为它直接影响到数据库操作的稳定性和性能。在实际应用中,根据业务需求选择合适的隔离级别和锁策略,可以有效地解决并发问题,确保数据一致性,同时优化系统性能。

    狂神MySQL笔记.rar

    事务处理是数据库管理的重要部分,笔记会详细阐述MySQL中的ACID属性(原子性、一致性、隔离性、持久性),以及事务的开始、提交、回滚操作。同时,还会介绍不同隔离级别的概念及其在实际应用中的选择。 在性能优化...

    尚硅谷mysql笔记.zip

    这份笔记可能包含了从基础概念到高级特性的全面讲解,包括但不限于SQL语言、数据类型、数据库设计、索引、事务处理、视图、存储过程和触发器等。 1. SQL语言基础:SQL是Structured Query Language的缩写,是用于...

    鲁班学院MySQL课堂笔记(B+树索引,事务,锁)

    鲁班学院的这份课堂笔记深入浅出地探讨了MySQL中的核心概念:B+树索引、事务处理以及锁定机制。 一、InnoDB行格式、数据页结构以及索引底层原理分析 InnoDB是MySQL中最常用的存储引擎,它支持事务处理和行级锁定。...

    新概念第二册1-68课笔记

    新概念英语第二册1-68课的笔记涵盖了丰富的词汇和表达方式,旨在帮助学习者提升英语听说读写能力。其中第一课"A private conversation"主要讲述了关于“私人的”、“谈话”以及相关词汇的用法。 首先,"private"一...

    Struts2笔记+Hibernate3.6笔记+Spring3笔记

    SSH是Java开发中广泛使用的三大框架——Struts2、Hibernate和Spring的缩写。这三大框架结合使用,能够...通过学习这些笔记,可以深入了解每个框架的核心概念、用法以及它们如何协同工作,从而提升开发效率和项目质量。

    达内笔记(自己整理完整)

    这份笔记可能包含了大量的编程概念、语法、设计模式以及实战项目等内容,旨在帮助学习者系统地掌握Java编程。 【描述】"自己整理的达内笔记,20多万字,学习用,不要用来谋利"表明这是一份详尽的个人学习资源,字数...

    李兴华Oracle全部笔记

    李兴华Oracle全部笔记是一份详细记录了Oracle相关知识的学习资料,涵盖了从基础概念到高级特性的全面讲解。这些笔记可能是李兴华在深入研究Oracle后的心得体会,对于想要学习或提升Oracle技能的人来说是一份宝贵的...

    TSM概念笔记(IBM Tivoli Storage Manager)

    5. **多会话与事务概念**: **多会话功能**允许TSM服务器同时处理多个备份任务,提高备份效率。管理员可以通过配置MAXSESSIONS(服务器端)和MAXNUMMP(客户端)以及在客户端选项文件中设置RESOURCEUTILIZATION来...

    若依RuoYi框架剖析笔记,该笔记是在学习江南一点雨所录课程再结合自己的理解所写

    《若依RuoYi框架剖析笔记》是基于江南一点雨的...以上是RuoYi框架剖析笔记的关键知识点,涵盖了从项目改造到分布式事务,再到前端Vue3和工作流引擎Flowable的深度探讨,对于理解和运用RuoYi框架有着极高的参考价值。

    狂神说笔记(最全).zip

    在数据库管理方面,笔记可能涉及SQL语言、关系型数据库如MySQL和Oracle的管理、事务处理、性能优化以及NoSQL数据库的介绍。 网络技术部分可能包括TCP/IP协议栈、HTTP协议、网络安全、网络编程接口(如套接字)等...

    JavaEE5学习笔记01-JTA和数据库事务

    ### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...

Global site tag (gtag.js) - Google Analytics