文档章节

事务相关概念

D_Kim
 D_Kim
发布于 2017/07/31 17:13
字数 894
阅读 3
收藏 0
点赞 0
评论 0

事务

事务的特性

ACID特性:

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离线(Isolation)
  • 持久性(Durability)

事务所面临的问题

脏读 就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。

1.Mary的原工资为1000, 财务人员将Mary的工资改为了8000(但未提交事务)

2.Mary读取自己的工资 ,发现自己的工资变为了8000,欢天喜地!

3.而财务发现操作有误,回滚了事务,Mary的工资又变为了1000像这样,Mary记取的工资数8000是一个脏数据。

不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。

1.在事务1中,Mary 读取了自己的工资为1000,操作并没有完成

2.在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务.

3.在事务1中,Mary 再次读取自己的工资时,工资变为了2000

幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

目前工资为1000的员工有10人。

1.事务1,读取所有工资为1000的员工。

2.这时事务2向employee表插入了一条员工记录,工资也为1000

3.事务1再次读取所有工资为1000的员工 共读取到了11条记录

事务隔离级别

事务隔离级别脏 读不可重复读幻读
READ_UNCOMMITTED允许允许允许
READ_COMMTTED禁止允许允许
REPEATABLE_READ禁止禁止允许
SERIALIZABLE禁止禁止静止

spring的事务传播行为

事务从方法A传播到方法B,对于B来说

  1. PROPAGATION_REQUIRED:如果没有事务就新建一个事务;如果有,就加入当前事务(spring提供的默认事务传播行为)
  1. RROPAGATION_REQUIRES_NEW:如果没有事务就新建一个事务;如果有,就将当前事务挂起。
  2. PROPAGATION_NESTED:如果没有事务就新建一个事务;如果有,就在当前事务中嵌套其他事务。所嵌套的子事务与主事务之间是有关联的(当主事务提交或回滚,子事务也会提交或回滚).
  3. PROPAGATION_SUPPORTS:如果没有,就以非事务方式执行;如果有,就使用当前事务。
  4. PROPAGATION_NOT_SUPPORTED:如果没有,就以非事务方式执行;如果有,就将当前事务挂起.
  5. PROPAGATION_NEVER:如果没有,就以非事务方式执行;如果有,就抛出异常。
  6. PROPAGATION_MANDATORY:如果没有,就抛出异常;如果有,就使用当前事务。

© 著作权归作者所有

共有 人打赏支持
D_Kim
粉丝 0
博文 22
码字总数 7884
作品 0
深圳
Android研究笔记二-ActivityFragment

Fragment实现了Activity拼装。进一步地,由于Fragment的引入,自然也引入了关于Fragment的变化。或者说Fragment作为一个非常好的Activity分解概念,它是一个非常好的状态识别单位。有了这个状...

刘小兵2014 ⋅ 2012/10/27 ⋅ 0

分布式事务如何拆解成单机事务

这段时间一直在思考分布式事务的实现,一开始的思路总是停留在应用层面上,后来经过查看相关资料才知道,要支持分布式事务得需要数据库的支持,也就还是回到了数据库层面,另外在Java里面结合...

砚羲 ⋅ 2015/02/09 ⋅ 0

乱想:由JTA蔓延到EJB

最近一个项目服务端原来是用EJB + SSH 转到Play 1.x上,而且原框架是分布式部署,整个程序理论上可有N个节点,实际上最多有五个节点的调用。项目包括Delphi客户端,Java服务端,与Java数据中...

刀狂剑痴 ⋅ 2015/08/27 ⋅ 0

PHP 学习必备技能(基础略过)

1.面向对象编程 面向对象编程基本概念 类和对象的关系 如何定义类 成员属性(变量) 如何创建对象实例及如何访问对象属性 对象在内存中存在的形式 栈、堆、全局区、常量区和代码区的关系 成员方...

风雪中的舞者 ⋅ 2015/08/05 ⋅ 0

关于什么是并发 -- 两个凡是的一点点看法

大多数情况, 人们搞混了 请求连接数 和 并发的概念 并发有两个前提: 1:处理同类事物 2:事务处理的时间窗口发生重叠 3:请求完成时间重叠并不意味着并发, 只是连接数上升。 由于大多请求...

宏哥 ⋅ 2016/03/24 ⋅ 17

【分布式事务系列】提出疑问和研究过程

分布式事务 【分布式事务系列】提出疑问和研究过程 对于我们这种初学者,可能会使用Spring带给我们的@Transactional,可能了解JTA,可能会使用jotm、atomikos,又会遇到一些名词XA,支持XA的...

陶邦仁 ⋅ 2015/12/09 ⋅ 0

Spring Boot - 整合JdbcTemplate、MyBatis

Spring Boot - 数据库配置 回顾 Spring Boot - 初识 Hello World Spring Boot - Servlet、过滤器、监听器、拦截器 Spring Boot - 静态资源处理、启动加载、日志处理 整合JdbcTemplate pom.xm...

刘忠旭 ⋅ 2017/06/10 ⋅ 0

oracle的增量检查点与block buffer

增量检查点 首先本文不会作过多的概念描述,对于增量检查点机制,其实在任何关系型数据库里都会存在。从事务的持久性角度来看,他的目的也是显而易见的,即保证数据块的正常刷新以及崩溃恢复...

superdba ⋅ 2017/12/24 ⋅ 0

Oracle Data Concurrency and Consistency一之Oracle事务隔离级别

越来越多的接触并发、吞吐量、锁、一致性等等问题,很多时候也经常听到一些说系统性能太低,加并发提高性能,这往往是泛泛之谈。 把握不清楚问题的症结、问题源,并发很有可能不仅对性能无益...

hawk682808 ⋅ 2013/11/27 ⋅ 0

Java for Web学习笔记(一零一):Spring框架中使用JPA(1)Transaction(上)

在spring中使用事务涉及的Bean 本学习将介绍一些在Spring中使用事务设计的Bean,有一个大致的概念认识,以便了解后面的代码。如果觉得枯燥,也可以在后面的学习中回过头来看。   在之前的学...

flowingflying ⋅ 2017/12/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

UI ,前端框架选型

Flat-UI

miaojiangmin ⋅ 4分钟前 ⋅ 0

Istio Service Mesh 教程

Istio Service Mesh 教程 作者 宋净超 | 5400字 | 阅读大约需要11分钟 | 归档于istio | 发表于 2018-05-22 标签 #Istio #教程,来自 https://servicemesher.github.io/blog/istio-service-m...

openthings ⋅ 9分钟前 ⋅ 0

scala swing

scala swing组件的库 https://github.com/scala/scala-swing scala swing的API文档 https://www.scala-lang.org/api/2.9.1/scala/swing/package.html...

whoisliang ⋅ 13分钟前 ⋅ 0

CentOS安装配置Nginx

安装依赖 yum install gcc yum install pcre-devel yum install zlib zlib-devel yum install openssl openssl-devel //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-deve......

临江仙卜算子 ⋅ 20分钟前 ⋅ 0

开源 java CMS - FreeCMS2.8 依申请公开

项目地址:http://www.freeteam.cn/ 依申请公开 1. 转交申请公开 用户可以把申请公开转交给其他人办理,系统会记录此申请公开的转交记录。 注意:同时只能转交一个申请公开。 选择需要转交的...

freeteam ⋅ 24分钟前 ⋅ 0

以太坊 web3.py 签名转账

以太坊 web3.py 签名转账 本文节选自电子书《Netkiller Blockchain 手札》 Netkiller Blockchain 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86...

netkiller- ⋅ 29分钟前 ⋅ 0

年薪40W的程序员必会的技术有哪些?

很多人在问我,程序员如何拿高薪,如何做到年薪40W+,其实总结出来还是一句话,你的技术决定你的能力已经薪资。 那么什么样的技术人才才能拿到一份Java行业里面的高薪呢? 下面是我的一个总结...

码代码的小司机 ⋅ 30分钟前 ⋅ 0

jesque-spring使用及源码分析

1.使用 jesque结合spring使用,步骤如下: 1.1 在项目中添加maven依赖 <dependency> <groupId>net.lariverosc</groupId> <artifactId>jesque-spring</artifactId> <version>1.0.0</ve......

Funcy1122 ⋅ 31分钟前 ⋅ 0

OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《29》- 未完成乐队 《29》- 未完成乐队 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :#看球提醒# 02:00 巴西v...

小小编辑 ⋅ 57分钟前 ⋅ 16

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部