1:什么是事务:
事务是一系列操作的集合,这一系列操作可以看成一个工作单元;
也可以说是一个工作单元;
2:事务执行的结果:
要么commit;要么rollback;
3:事务的4个小特性:(面试的时候一般都会问这个问题)
a)原子性:
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。<o:p></o:p>
b )一致性(consistency):<o:p></o:p>
指的是事务执行前后的系统状态必须保持“一致”。比如说,某一事务中涉及到了户头之间的转账。那么,consistency 就是说,不管有多少户头参与了转账,也不管转了多少钱,最终总的钱数目必须与事务执行前的总数目一致。---- 当然,不考虑跨银行转账的问题。<o:p></o:p>
C)隔离性:
只有在事务的并发执行的时候才涉及到事物的隔离性;
由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。事务识别数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。<o:p></o:p>
d)持久性:<o:p></o:p>
事务完成后,它对系统(可理解成为数据库)的影响是持久的;<o:p></o:p>
4:事务并发执行引起的问题(注意事务A和事务B 的执行的先后顺序)<o:p></o:p>
(1) lost update:
A和B事务并发执行,A事务执行update后,提交;B事务在A事务update后,B事务结束前也做了对同样数据的update操作,然后rollback,则两次提交操作都丢失了。
(2) dirty read:<o:p></o:p>
A和B事务并发执行,B事务执行update后,A事务select B事务没有提交的数据,B事务roolback,则A事务得到的数据不是数据库中的真实数据。也就是dirty data(和数据库中不一致的数据)
(3) unrepeatable read:(不可重复的读)
unrepeatable-read简而言之是因为事务B对数据进行那update(更新操作),导致事务A前后2次对数据进行select(读操作)(一次是发生在事务B update数据之前,一次是update之后;)时,读取的数据不同;<o:p></o:p>
【A和B事务并发执行,A事务select数据,然后B事务update该数据,A再次select该数据时,发现该数据变化了。】
(4) phantom read:(幻读)
A和B事务并发执行,A事务select数据,B事务insert或者update数据,A事务再次select发现结果集中有以前没有的数据或者以前有的数据消失了。
注意:以上事务的并发所引起的问题,都是2个事务(或多个事务)并发对一组相同的数据进行操作所 引起的;
所谓的幻读,脏读,不可重复读。大家可以从名字上就知道个大概;幻读,脏读,不可重复读中间都有一个“读”
字,可见,当2个事务并发执行的时候,其中一个事务A肯定有读的操作。而另外一事务B只是更新了事务A所读取
过的数据,而事务A再次读的时候就和第一次读的时候有所变化那;所以才有了脏读,幻读,不可重复读的 问题
3.事务的隔离级别
在企业应用中,事务往往存在于并发执行的环境当中,那么如果做到并发事务之间完全的isolation,做到对于以上四大问题完全解决,那么势必会影响程序的performance和scalability,因此减弱这种完全的isolation,而带来的就是performance和scalability的提高。因此事务的隔离级别根据以前的四大问题有四种。
(1)read uncommitted isolation:不允许(1)问题存在,允许(2)问题存在。写事务执行时不允许同时有其他的写事务并发执行。
(2)read committed isolation:不允许(2)问题存在,允许(3)问题存在。读事务允许其他事务并发执行,没有提交的写事务执行时不允许同时有其他并发事务执行。
(3)repeatable read isolation:不允许(3)问题存在,允许(4)问题存在。读事务不允许写事务并发执行,没有提交的写事务执行时不允许同时有其他并发事务执行。
(4)serializable:完全解决问题。<o:p></o:p>
分享到:
相关推荐
在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务...
"JPA事务管理" JPA(Java Persistence API)是一种Java持久化规范,它提供了一个抽象层来访问关系数据库。JPA的事务管理是指对一系列操作的管理,包括创建、读取、更新和删除(CRUD)等操作。事务管理的目的是确保...
数据库之事务调优是数据库管理中的一个重要环节,它关乎到系统的性能、稳定性和并发处理能力。事务是数据库操作的基本单位,确保数据的一致性、完整性和可靠性。在高并发、大数据量的环境下,有效的事务调优能显著...
事务管理是企业级应用开发中的关键技术之一,Spring 和 Spring Boot 提供了强大且灵活的事务管理机制。通过理解和掌握这些机制,开发者可以更好地构建可靠的应用程序,确保数据的一致性和完整性。希望本文能帮助您更...
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在...
Spring 编程式事务与声明式事务详解 本文将详细解释 Spring 的编程式事务管理及声明式事务管理,帮助读者理清思路。 事务管理的重要性 事务管理对于企业应用至关重要。它保证了用户的每一次操作都是可靠的,即便...
### 数据库事务总结 #### 一、事务的基本概念与特性 **事务**是数据库系统中的一个逻辑工作单元,它由一系列的操作组成,这些操作要么都完成,要么都不完成,以此来保证数据的一致性和完整性。 #### 二、事务的...
Java分布式事务是大型分布式系统中不可或缺的一个重要组成部分,它确保在多个网络节点间的数据操作能够保持一致性和完整性。在分布式环境中,由于多个服务之间可能存在数据交互,因此需要一种机制来处理跨服务的数据...
在Spring框架中,事务管理是核心特性之一,它允许开发者以声明式或编程式的方式处理应用中的事务。Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何...
### Spring中事务的传播属性详解 #### 一、引言 在使用Spring框架进行应用程序开发时,事务管理是一项非常重要的特性。Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。其中,声明式事务管理因其...
其中,事务管理是保证数据一致性的重要手段之一。然而,在实际开发过程中,有时会遇到这样一个问题:当我们尝试使用自定义切面时,原有的声明式事务可能会失效。这种情况通常发生在没有正确配置切面和事务管理器之间...
Java 事务管理和事务分类主要涉及如何确保在多步骤操作中数据的一致性和完整性。事务是数据库操作的基本单元,遵循ACID原则,即原子性、一致性、隔离性和持久性。在Java中,事务处理通常与数据库操作密切相关,尤其...
事务传播特性&事务隔离级别 事务传播特性是指在 Java 中,事务的传播行为,即在多个事务之间如何交互和传播。Java 中有七种事务传播特性,分别是: 1. PROPAGATION_REQUIRED:如果存在一个事务,则支持当前事务。...
本文的目的是要提供一个关于的Java事务处理API(JTA)的高级的概述,以及与分布式事务相关的内容。一个事务处理定义了一个工作逻辑单元,要么彻底成功要么不产生任何结果。 一个分布式事务处理只是一个在两个或更多...
Spring 2.5 实现事务管理(本地事务、分布式事务) Spring 框架提供了对事务管理的支持,它可以使得事务的管理变得更加简洁和灵活。事务管理是指在多个操作中维持一致性的机制,它可以确保在多个操作中,如果某个...
在EJB中,事务管理是核心功能之一,确保了数据的一致性和完整性。事务是数据库操作的基本单元,确保一组操作要么全部成功,要么全部失败,避免数据的不一致。 事务的界定是定义事务的生命周期,包括开始、挂起、...
事务管理)进行模块化。在传统的面向对象编程中,这些关注点通常被分散在应用程序的各个部分中,导致代码重复且难以维护。AOP 的核心是 aspect,它封装了特定的关注点,比如日志记录、安全性检查或事务管理,并允许...
事务是数据库操作的基本单元,确保数据的一致性和完整性。在Java编程中,处理事务主要涉及JDBC(Java Database Connectivity)和JTA(Java Transaction API)。理解这些概念对于开发可靠的、高性能的数据库应用至关...
本文将深入探讨Java中的事务设计策略,包括本地事务模型、编程式事务模型、声明式事务模型以及几种事务设计模式。 首先,我们来理解事务的基本概念。事务是数据库操作的基本单元,它保证了一组操作要么全部成功,...