文档章节

事务相关概念

D_Kim
 D_Kim
发布于 2017/07/31 17:13
字数 894
阅读 4
收藏 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
博文 28
码字总数 10919
作品 0
深圳
Android研究笔记二-ActivityFragment

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

刘小兵2014
2012/10/27
0
0
乱想:由JTA蔓延到EJB

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

刀狂剑痴
2015/08/27
76
0
PHP 学习必备技能(基础略过)

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

风雪中的舞者
2015/08/05
0
0
关于什么是并发 -- 两个凡是的一点点看法

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

宏哥
2016/03/24
1K
17
oracle的增量检查点与block buffer

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

superdba
2017/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

设计模式之 明确责任 观察者模式 状态模式 责任链模式

观察者模式是任务分发的一种模式。 如果认为我们设计的系统的各个模块(或子系统)的最终目的是完成共同任务,那么这个任务如何分配到多个模块的就是我们遇到的第一个问题。简单设计场合我们...

backbye
18分钟前
2
0
14-利用思维导图梳理JavaSE-大汇总

14-利用思维导图梳理JavaSE-Java基础知识大汇总 主要内容 1.对象入门 2.一切都是对象 3.程序流程控制 4.初始化和消除 5.权限访问控制 6.复用类 7.多态 8.接口与抽象类 9.内部类 10.容器 11.异...

飞鱼说编程
54分钟前
5
0
利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired

大家平时使用spring依赖注入,都是怎么写的? @Servicepublic class OrderService { @Autowired private UserService userService;} 是不是很熟悉的感觉?但是呢 如果你用...

HeyS1
今天
25
0
IBATIS 写BLOB字段遇到的问题

1、 首先遇到的配置问题,通过设置typeHandler 来支持写入。接下来由此引出了事务的问题。 <typeHandler jdbcType="BLOB" javaType="[B" callback="org.springframework.orm.ibatis.support....

echo-neo
今天
1
0
37. Sudoku Solver

Description tags: backtrack,hash table difficulty: hard Write a program to solve a Sudoku puzzle by filling the empty cells.A sudoku solution must satisfy all of the following......

52iSilence7
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部