事务管理

大厂面试必知必会:图解分布式事务实现原理

让人想犯罪 __ 提交于 2019-12-19 17:12:33
问题场景 什么是事务? 事务是数据库从一个稳定状态变迁到另一个稳定状态的保证,具备 ACID 这 4 个特性: 原子性(Atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态。 一致性(Consistency):在事务开始之前和事务结束以后,数据库的完整性限制没有被破坏。 隔离性(Isolation):两个事务的执行是互不干扰的,两个事务时间不会互相影响。 持久性(Durability):在事务完成以后,该事务对数据库所作的更改便持久地保存在数据库之中,并且是完全的。 例如应用程序需要更新多条相关数据时就需要进行事务处理。 什么是分布式事务? 当遇到复杂业务调用时,可能会出现跨库多资源调用(一个事务管理器,多个资源)/多服务调用(多个事务管理器,多个资源),期望全部成功或失败回滚,这就是分布式事务,用以保证“操作多个隔离资源的数据一致性”。 分布式事务与 XA 规范 分布式事务是指会涉及到操作多个数据库的事务,同样必须保证 ACID。其就是将对同一库事务的概念扩大到了对多个库的事务:对同一库的 SQL 操作对应了分布式事务中对一个库的事务。 X/Open XA 定义了分布式事务处理的规范,并由数据库厂商在驱动层面进行实现。XA 规范的基础是两阶段提交协议

JDBC中的事务管理------Transaction

不打扰是莪最后的温柔 提交于 2019-12-18 20:34:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 数据库的事务就是将任意多个SQL语句看做一个整体,只有这些SQL语句都成功执行,DBMS才会保存这些SQL语句对数据库的修改(事务提交)。否则,数据库将恢复到执行SQL语句之前的状态(事务回滚)。大多数DBMS都支持两种事务模式:隐式模式和显式模式。当执行每一条SQL语句时,无需进行事务提交,就可以直接将修改结果保存到数据库中,这叫做 隐式模式。显式模式必须使用相应的语句或命令开启事务、提交事务和回滚事务。 在使用JDBC时,默认情况下是 隐式事务模式,可以通过setAutoCommit方法改为显式模式。 处理步骤: 1. 开始事务: 设值属性AutoCommit为false 2.批处理SQL语句 3.提交事务conn.commit(); 4.恢复现场:AutoCommit为true。 异常时:回滚事务 如果执行SQL语句过程中 出现异常 ,则在try catch中进行处理,主要是进行事务回滚,然后恢复现场。 来源: oschina 链接: https://my.oschina.net/u/1014520/blog/225610

Java事务处理总结

左心房为你撑大大i 提交于 2019-12-18 20:09:44
http://lavasoft.blog.51cto.com/62575/53815/ 一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状态。隔离性表示在事务执行过程中对数据的修改,在事务提交之前对其他事务不可见。持久性表示已提交的数据在事务执行失败时,数据的状态都应该正确。 通俗的理解,事务是一组原子操作单元,从数据库角度说,就是一组SQL指令,要么全部执行成功,若因为某个原因其中一条指令执行有错误,则撤销先前执行过的所有指令。更简答的说就是:要么全部执行成功,要么撤销不执行。 既然事务的概念从数据库而来,那Java事务是什么?之间有什么联系? 实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现的。增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码中。因此,数据库操作的事务习惯上就称为Java事务。 二、为什么需要事务 事务是为解决数据安全操作提出的

数据库事务原理及并发、死锁

本小妞迷上赌 提交于 2019-12-18 20:07:18
1. 什么是数据库事务 1.1 数据库事务是指作为单个逻辑工作单元执行的一系列操作(SQL语句)。这些操作要么全部执行,要么全部不执行。 1.2 通过ACID实现数据库事务模型 1.2.1 原子性(Atomicity):事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。 1.2.2 一致性(Consistemcy):事务执行前后,数据库的状态都满足所有的完整性约束。 1.2.3 隔离性(Isolation):并发执行的事务是隔离的,保证多个事务互不影响。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。通过设置数据库的隔离级别,可以达到不同的隔离效果。 1.2.4 持久性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。 1.3 事务运行的三种模式 1.3.1 自动提交事务:默认事务管理模式。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。 1.3.2 显式事务:以BEGIN TRANSACTION显式开始,以COMMIT或ROLLBACK显式结束。 1.3.3 隐性事务:当连接以此模式进行操作时

WCF,Net remoting,Web service

六眼飞鱼酱① 提交于 2019-12-18 16:07:54
今天看到WCF,说是整合了Net remoting,Web service。。。下面列一下概念。 一 WCF 概括地说,WCF具有如下的优势: 1、统一性 前面已经叙述,WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合。由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。 2、互操作性 由于WCF最基本的通信机制是SOAP,这就保证了系统之间的互操作性,即使是运行不同的上下文中。这种通信可以是基于.Net到.Net间的通信。 可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphere,WebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的操作系统,如Sun Solaris,HP Unix,Linux等等。 3、安全与可信赖 WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。 在SOAP的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS

WCF,Net remoting,Web service

纵然是瞬间 提交于 2019-12-18 14:18:18
一 WCF 概括地说,WCF具有如下的优势: 1、统一性 前面已经叙述,WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合。由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。 2、互操作性 由于WCF最基本的通信机制是SOAP,这就保证了系统之间的互操作性,即使是运行不同的上下文中。这种通信可以是基于.Net到.Net间的通信。 可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphere,WebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的操作系统,如Sun Solaris,HP Unix,Linux等等。 3、安全与可信赖 WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。 在SOAP的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS-AtomicTransaction之上的基于SOAP格式交换的信息

Sql Server 锁机制

心已入冬 提交于 2019-12-18 13:41:37
转自: http://blog.csdn.net/missmecn/archive/2008/10/06/3019798.aspx 相关文章: my sql 数据库锁 ORACLE里几种锁模式 推荐圈子: Pipboy 更多相关推荐 对 锁机制 的研究要具备两个条件: 1.数据量大 2.多个用户同时并发 如果缺少这两个条件,数据库不容易产生死锁问题。研究起来可能会事倍功半。如果这两个条件都有,但你还是按数据库缺省设置来处理数据,则会带来很多的问题,比如: 1)丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果 2)脏读 A用户修改了数据时,B用户也在读该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 3)不可重复读 B用户读出该数据并修改,同时,A用户也在读取数据,此时A用户再读取数据时发现前后两次的值不一致 SQL SERVER 作为多用户数据库系统,以事务为单位,使用锁来实现并发控制。 SQL SERVER 使用“锁”确保事务完整性和数据一致性。 一、锁的概念 锁(LOCKING)是最常用的并发控制机构。是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。锁是事务对某个数据库中的资源(如表和记录)存取前,先向系统提出请求,封锁该资源,事务获得锁后,即取得对数据的控制权

WCF,Net remoting,Web service

℡╲_俬逩灬. 提交于 2019-12-18 10:48:27
一 WCF 概括地说,WCF具有如下的优势: 1、统一性 前面已经叙述,WCF是对于ASMX,.Net Remoting,Enterprise Service,WSE,MSMQ等技术的整合。由于WCF完全是由托管代码编写,因此开发WCF的应用程序与开发其它的.Net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用WCF来创建面向服务的应用程序。 2、互操作性 由于WCF最基本的通信机制是SOAP,这就保证了系统之间的互操作性,即使是运行不同的上下文中。这种通信可以是基于.Net到.Net间的通信。 可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphere,WebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的操作系统,如Sun Solaris,HP Unix,Linux等等。 3、安全与可信赖 WS-Security,WS-Trust和WS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。 在SOAP的header中增加了WS-ReliableMessaging允许可信赖的端对端通信。而建立在WS-Coordination和WS-AtomicTransaction之上的基于SOAP格式交换的信息

软件工程简史

房东的猫 提交于 2019-12-18 05:21:48
从《WCF服务编程》一书中抄下来的,感觉对面向对象、面向组件和面向服务进行了很好的解释,但是对于我而言,需要反复看才能理解。 20世纪40-50年代,第一台通用的计算机才真正问世,它主要用于国防。这个时期的计算机可以运行代码并处理某些问题,而不仅仅是单个的预定义的任务。其缺点是计算机执行的代码与机器的硬件是紧密耦合的。实际上,当初计算机的软件与硬件之间并没有明显的区别(软件一词是在1958年才提出的)。起初,这个缺点并未引起大家的关注,因为世界上还没有手提电脑,都是超大型计算机。随着计算机产品大量生产,问题出现了。在20世纪60年代早期,汇编语言的出现才真正把机器与代码解耦开来,代码可以执行在不同的机器上。但是,代码与计算机的架构关联,即编写在8位机上的程序不能运行在16位机上,因为计算机的寄存器、可用内存和内存分布都不一样。因此,维护程序的成本逐渐增加。随着计算机的广泛应用,民众和政府部门为满足有限的资源与预算,提供了更好的解决方案。 20世纪60年代,更高级别的语言,如COBOL和FORTRAN,引入了编译器的概念。开发人员可以编写更加抽象的程序,编译器可以将其转化为实际的汇编代码。编译器第一次把代码从硬件和计算机架构解耦开来。第一代语言存在的问题是代码会导致非结构化的编程,这些代码通过使用jump或者go to语句依赖于它自身的结构

mysql数据库锁的机制-one

本秂侑毒 提交于 2019-12-17 18:07:49
锁概念 : 当高并发访问同一个资源时,可能会导致数据不一致,需要一种机制将用户访问数据的顺序进行规范化,以保证数据库数据的一致性。锁就是其中的一种机制。 举例 :以买火车票为例,火车票可面向广大消费者,每位用户都可以查询余票数量、购买火车票 ... 但最终购票成功的仅有一位用户,处于购票高峰期时会出现很多用户同时抢夺同一张票的现状,为了避免出现一张火车票被多个用户购买成功的情况,当第一位用户进入购票流程时,就将数据库锁定,让别的用户无法修改,只有当第一位用户购票成功或取消购票之后,才会解除数据库的锁定,此时别的用户就可继续进行操作。这样就保证了一张火车票只能被一个用户购买。 悲观锁: 一般代指 数据库锁机制, 类似于我们在多线程资源竞争时添加的互斥锁,较容易出现死锁现象。它对于数据被外界修改持保守态度, 认为数据随时会修改,所以整个数据处理中需要将数据加锁。 悲观锁一般都是依靠关系数据库提供的锁机制实现。 悲观锁按使用性质划分: 数据库的操作可归纳为两种:读和写。当多个事务同时读取一个对象时,不会产生有冲突。但同时读和写,或者同时写会产生冲突。因此为提高数据库的并发性能,定义三种锁 共享锁( Share locks简记为S锁 ) :也称 读锁 ,事务A给对象T加S锁, 其他事务也只能对T加S , 多个事务可以同时读,但不能有写操作 ,直到A释放S锁。     地球语言 :