事务处理

JAVA事务系列三:JTA事务

徘徊边缘 提交于 2020-02-17 19:39:20
什么是JTA? JTA全称Java Transaction API ,即Java事务API,英文解释: Java Transaction API (JTA) specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications. JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。 JTA允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。JDBC驱动程序的JTA支持极大地增强了数据访问能力。 JTA的主要接口: 位于javax.transaction包中 a、UserTransaction接口:让应用程序得以控制事务的开始、挂起、提交、回滚等。由Java客户端程序或EJB调用。 b、TransactionManager 接口:用于应用服务器管理事务状态 c、Transaction接口:用于执行相关事务操作 d、XAResource接口

概念回顾---中间件(IDC)

社会主义新天地 提交于 2020-02-17 09:42:14
转自 http://www.itisedu.com/phrase/200604241155005.html 中间件 (IDC) 定义: 中间件 ( middleware )是一种独立的系统 软件 或服务 程序 ,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的 操作系统 之上,管理计算资源和网络通信 提出原因: 为解决分布异构问题这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。 也许很难给中间件一个严格的定义,但中间件应具有如下的一些特点: 满足大量应用的需要 运行于多种硬件和 OS 平台 支持分布计算,提供跨网络、硬件和 OS 平台的透明性的应用或服务的交互 支持标准的协议 支持标准的接口 IDC 分类: 终端仿真 / 屏幕转换中间件、数据访问中间件、 远程过程调用 中间件、 消息 中间件、交易中间件、 对 象 中间件。下面,针对几类主要的中间件分别加以简要的介绍。 1 、远程过程调用 远程过程调用是一种广泛使用的分布式应用程序处理方法。一个应用程序使用 RPC 来 “ 远程 ” 执行一个位于不同地址空间里的过程,并且从效果上看和执行本地调用相同。事实上,一个 RPC 应用分为两个部分: server 和 Client 。 server 提供一个或多个远程过程; client 向 server

oracle事务处理 自动提交

橙三吉。 提交于 2020-02-13 22:35:59
提交数据有三种类型: 显式提交、隐式提交及自动提交。下面分别说明这三种类型。 1、显式提交:用COMMIT命令直接完成的提交为显式提交。其格式为:SQL>COMMIT; 2、隐式提交: 用SQL命令间接完成的提交为隐式提交。这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。 3、自动提交:若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:SQL>SET AUTOCOMMIT ON; 追问 那么ora11g中那个控制台的运行环境怎么配置、使用? 回答 不用配置啊。默认时autocommit 为off,但当你用数据定义语言DDL (即第二种隐式提交命令时),即使autocommit 为off也是会提交事务的。如果你想回到提交事务之前的某个点,可设savapoint,然会用rollback to savepoint。 在你的问题补充我看出问题来,你切换用户,应该用的是connect命令,是会提交事务的。其实你完全可以再打开一个控制台sqlplus用另一用户登录啊。在一个sqlplus不可能用多个session的。 来源: https://www.cnblogs.com/dbstone

redis的事务处理

我只是一个虾纸丫 提交于 2020-02-05 13:32:59
1、redis事务可以依次执行多个命令,并且带有以下三个重要的保证: 批量操作在发送exec命令前被放入队列缓存。 收到exec命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。 2、一个事务从开始到执行会经历一下三个阶段: 开始事务 命令入队 执行事务 3、事务处理相关命令 命令名称: multi 语法:multi 功能: 标记一个事务块的开始 返回值: 总是返回OK 命令名称: exec 语法:exec 功能: 执行所有事务块内的命令。 返回值: 事务块内所有命令的返回值,按命令执行的先后顺序排列。 当操作被打断时,返回空值nil。 命令名称: discard 语法:discard 功能: 取消事务,放弃执行事务块内的所有命令。 返回值: 总是返回OK 命令名称: watch 语法:watch key [key……] 功能: 监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。 返回值: 总是返回OK 命令名称: unwatch 语法:unwatch 功能: 取消watch命令对所有key的监视。 如果在执行watch命令之后,exec命令或discard命令先被执行了的话,那么久不需要再执行unwatch了 返回值:总是返回OK 来源:

网站缓存

痴心易碎 提交于 2020-02-05 04:48:24
网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验。   网站缓存按照存放的地点不同,可以分为客户端缓存、服务端缓存。 客户端缓存   客户端缓存又可分为:浏览器缓存、网关或代理服务器缓存   网关或代理服务器缓存是将网页缓存中网关服务器上,多用户访问同一个页面时,将直接从网关服务器把页面传送给用户。   浏览器缓存是最靠近用户的缓存,如果启用缓存,用户在访问同一个页面时,将不再从服务器下载页面,而是从本机的缓存目录中读取页面,然后再浏览器中展现这个页面。   浏览器缓存的控制,可以设置meta标签,可以设置数字,也可以设置时间,如下: <Meta http-equiv="Expires" Content="3600"> <Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">   HTTP头信息如下: HTTP/1.1 200 OK Date: Fri, 30 Oct 1998 13:19:41 GMT Server: Apache/1.3.3 (Unix) Cache-Control: max-age=3600, must-revalidate Expires: Fri, 30 Oct 1998 14

事务处理

試著忘記壹切 提交于 2020-02-04 09:50:46
事务处理 一、事务四特性(ACID) 1、原子性:一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。也就是说如果事务中的某一步出错,所有对数据进行的 2、一致性:事务必须是使数据库从一个状态变到另一个状态。总的状态要一致。 3、隔离性:一个事务的执行不会被其他事务所干扰。 4、持久性:一个事务一旦提交,它对数据改动将是持久性的,其他操作和故障不应使其数据丢失。 二、mysql数据库事务 1、事务的语句 使用START TRANSACTION或者BEGIN来开启一个新事务。 使用COMMIT来提交一个事务,使其操作产生持久性的影响。 使用ROOLBACK来撤回这次事务,取消其产生的影响。 使用SET autocommit来设置是否自动提交事务。 2、默认事务 mysql默认使用autocommit,这意味着每一个语句都是原子性的,其效果相当于把该语句环绕一个begin和commit语句的事务,并且不能使用rollback语句。当该语句执行过程中出现错误时,该语句则被ROOLBACK。 3、事务隔离级别 读未提交:为事务之间提供最小的保护,它使用了特定的锁定策略,允许一个事务在不等待另一个事务结束的情况下继续执行。这种性能的提升降低了一致性,导致了脏读(读取其他事务未提交的数据)等出现。一般在只执行查询操作的情况下使用。 读已提交:采用某种锁定策略

sql server事务全攻略

风流意气都作罢 提交于 2020-02-03 04:37:06
一 事务的属性 事务具有ACID属性 即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性 原子性 就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全 回滚,全部不保留 一致性 事务完成或者撤销后,都应该处于一致的状态 隔离性 多个事务同时进行,它们之间应该互不干扰.应该防止一个事务处理其他事务也要修改的数据时, 不合理的存取和不完整的读取数据 永久性 事务提交以后,所做的工作就被永久的保存下来 二 事务并发处理会产生的问题 丢失更新 当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题、 每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。 脏读 当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。 第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。 不可重复读 当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。 不一致的分析与未确认的相关性类似,因为其它事务也是正在更改第二个事务正在读取的数据。 然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其它事务更改;因而该行被非重复读取。

golang Mysql -- Tx

浪子不回头ぞ 提交于 2020-02-01 00:11:43
Transaction 事务 事务处理是数据的重要特性。尤其是对于一些支付系统,事务保证性对业务逻辑会有重要影响。golang的mysql驱动也封装好了事务相关的操作。我们已经学习了db的Query和Exec方法处理查询和修改数据库。 tx对象 一般查询使用的是db对象的方法,事务则是使用另外一个对象。sql.Tx对象。使用db的Begin方法可以创建tx对象。tx对象也有数据库交互的Query,Exec和Prepare方法。用法和db的相关用法类似。查询或修改的操作完毕之后,需要调用tx对象的Commit提交或者Rollback方法回滚。 一旦创建了tx对象,事务处理都依赖与tx对象,这个对象会从连接池中取出一个空闲的连接,接下来的sql执行都基于这个连接,直到commit或者rollback调用之后,才会把连接释放到连接池。 在事务处理的时候,不能使用db的查询方法,虽然后者可以获取数据,可是这不属于同一个事务处理,将不会接受commit和rollback的改变,一个简单的事务例子如下: tx, err := db.Begin() tx.Exec(query1) tx.Exec(query2) tx.commit() 在tx中使用db是错误的: tx, err := db.Begin() db.Exec(query1) tx.Exec(query2) tx.commit()

MySQL:45---事务处理(start transaction、rollback、commit、savepoint、autocommit)

吃可爱长大的小学妹 提交于 2020-01-29 06:24:33
一、事务概述 事务处理可以用来维护数据库的完整性,它保证成批的MySQL操作 要么全部执行,要么全部不执行 事务处理是一种机制,用来管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们或者作为整体执行,或者完全不执行(除非明确指示)。如果没有错误发生,整租语句提交给数据库。如果发生错误,则进行回退(撤销)以恢复数据库到某个已知且安全的状态 并非所有引擎都支持事务处理 只有 InnoDB存储引擎 才支持事务处理 几个关键词 事务(transaction): 指一组SQL语句 回退(rollback): 指撤销指定SQL语句的过程 提交(commit): 指将未存储的SQL语句结果写入数据库表 保留点(savepoint): 指事务处理中设置的临时占位符(place-holder),你可以对它发布回退(与回退整个事务处理不同) 二、事务的开始(start transaction) MySQL使用下面的语句来 标识事务的开始 start transaction; 三、事务的回退(rollback) MySQL使用rollback命令来进行 回退(撤销)语句 当使用rollback之后, 本次事务会自动关闭 哪些语句可以回退? insert、update、delete语句可以进行回退 不能回退select语句

MySQL事务处理特性和隔离级别

喜欢而已 提交于 2020-01-29 05:33:26
一.事务的特性 1.原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 2.一致性(Consistency):在一个事务中,事务前后数据的完整性必须保持一致,可以想象银行转账、火车购票。 3.隔离性(Isolation):多个事务,事务的隔离性是指多个用户并发访问数据库时, 一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。 4.持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。 二.事务的隔离级别 上面介绍了3种事务并发问题!现在介绍一下数据库提供的解决方案! 1.read uncommitted : 读取尚未提交的数据 :这个最低级,但是效率肯定最高,但是哪一个问题都不能解决。 2.read committed:读取已经提交的数据 :可以解决脏读 。 3.repeatable read:重读读取:可以解决脏读 和 不可重复读 。 4.serializable:串行化:可以解决脏读不可重复读和虚读,效率最差,相当于锁表,开发中一般不用。 上面的“2”是oracle数据库默认设置,“3”是mysql数据库默认的设置。 总结一下 事务隔离级别的性能: read uncommitted>read