文档章节

事务相关概念

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
博文 30
码字总数 11522
作品 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
oracle的增量检查点与block buffer

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

superdba
2017/12/24
0
0
PHP 学习必备技能(基础略过)

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

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

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

宏哥
2016/03/24
1K
17

没有更多内容

加载失败,请刷新页面

加载更多

Integer使用双等号比较会发生什么

话不多说,根据以下程序运行,打印的结果为什么不同? Integer a = 100;Integer b = 100;System.out.println(a == b);//print : trueInteger a = 200;Integer b = 200;System.out.pr...

兜兜毛毛
23分钟前
0
0
CockroachDB

百度云上的CockroachDB 云数据库 帮助文档 > 产品文档 > CockroachDB 云数据库 > 产品描述 开源NewSQL – CockroachDB在百度内部的应用与实践 嘉宾演讲视频及PPT回顾:http://suo.im/5bnORh ...

miaojiangmin
34分钟前
1
0
I2C EEPROM驱动实例分析

上篇分析了Linux Kernel中的I2C驱动框架,本篇举一个具体的I2C设备驱动(eeprom)来对I2C设备驱动有个实际的认识。 s3c24xx系列集成了一个基于I2C的eeprom设备at24cxx系列。at24cxx系列芯片包...

yepanl
36分钟前
2
0
设计模式之工厂模式

本篇博文主要翻译这篇文章: https://www.journaldev.com/1392/factory-design-pattern-in-java 由于翻译水平有限,自认为许多地方翻译不恰当,欢迎各位给出宝贵的建议,建议大家去阅读原文。...

firepation
今天
6
0

中国龙-扬科
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部