数据库带来的并发问题包括:

1.丢失或覆盖更新。(幻像读)

2.未确认的相关性(脏读)。

3.不一致的分析(非重复读)。

详细描述如下:

一.丢失更新

当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。

e.g.事务A和事务B同时修改某行的值,

1.事务A将数值改为1并提交

2.事务B将数值改为2并提交。

这时数据的值为2,事务A所做的更新将会丢失。

解决办法:对行加锁,只允许并发一个更新事务。

二.未确认的相关性(脏读)

当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。

e.g.

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

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

3.而财务发现操作有误,回滚了事务,Mary的工资又变为了1000

像这样,Mary记取的工资数8000是一个脏数据。

解决办法:如果在第一个事务提交前,任何其他事务不可读取其修改过的值,则可  以避免该问题。

三.不一致的分析(非重复读)

当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。不一致的分析与未确认的相关性类似,因为其它事务也是正在更改第二个事务正在读取的数据。然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其它事务更改;因而该行被非重复读取。

在一个事务中前后两次读取的结果并不致,导致了不可重复读。

e.g.

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

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

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

解决办法:如果只有在修改事务完全提交之后才可以读取数据,则可以避免该问题。

四.幻想读

当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻像读问题。事务第一次读的行范围显示出其中一行已不复存在于第二次读或后续读中,因为该行已被其它事务删除。同样,由于其它事务的插入操作,事务的第二次或后续读显示有一行已不存在于原始读中。

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

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

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

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

解决办法:如果在操作事务完成数据处理之前,任何其他事务都不可以添加新数据,则可避免该问题

原文出处:http://blog.csdn.net/d8111/archive/2008/06/29/2595635.aspx

java mysql不重复读写_数据库中的-脏读,幻读,不可重复读[转] - Java天空 - BlogJava...相关推荐

  1. mysql 中的脏读与幻读_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  2. mysql 可重复读 悲观锁_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  3. mysql悲观锁会有脏数据吗_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...

    首先说一下数据库事务的四大特性 1 ACID 事务的四大特性是ACID(不是"酸"....) (1) A:原子性(Atomicity) 原子性指的是事务要么完全执行,要么完全不执行 ...

  4. MySQL --- 19♪ 进阶15 TCL事务控制语言--建立结束事务/设置断点--默认隔离级别--脏读/幻读/不可重复读

    #TCL事物控制语言 : /*   Transaction control language : 事物控制语言   事务:     一个或者一组sql语句组成一个执行单元,这个执行单元要么全部执行,要 ...

  5. 数据库几个事务相关的知识点(脏读幻读不可重复读以及如何避免)

    0. 设置MYSQL的隔离界别 # 查询数据库当前事务隔离级别 mysql> select @@global.transaction_isolation,@@transaction_isolat ...

  6. mysql数据库的事务 acid 隔离级别 脏读 脏写 幻读 不可重复读

    事务的四大特征 原子性(atomicity):要么全部提交(commit),要么全部回滚(rollback) 一致性(consistency):数据从一个合法状态转换成另一种合法状态 隔离性(isol ...

  7. java mysql nclob_java语言操作Oracle数据库中的CLOB数据类型 (转)

    java语言操作Oracle数据库中的CLOB数据类型 (转)[@more@] 有关字段类型的相关信息可以查阅oracle技术网.下面摘抄一些有关blob.clob等类型的说明.又便于大家的了解. 字 ...

  8. mysql 5个约束条件_数据库中的五大约束条件

    数据库中的约束条件,在数据库中使用约束条件可以定义规则使得数据能够朝我们希望的方向发展,也就是可以保证数据的完整性.在数据库中有五大约束条件,分别为主键约束,非空约束,唯一约束,检查性约束,外键约束. ...

  9. mysql 中文数字转换_数据库中数字和中文的转换问题

    public class DaoUtil{ /** * 系统字典表 * 适用于列表循环时,根据编码获取汉字 * @param appdicid * @return */ public static H ...

最新文章

  1. 【超级大转载】常用的D3D变换相关函数
  2. Makefile for OpenCV
  3. Kafka、RabbitMQ、RocketMQ等消息中间件的对比 —— 消息发送性能和区别
  4. curl上传文件linux,在Linux中如何使用curl从一个服务器流式传输文件到另一个服务器(有限的服务器资源)...
  5. 深入解析jQuery中的延时对象的概念
  6. Android Log工具类,Toast工具类,获取当前方法名称
  7. 部署redis主从复制
  8. 32MB块意味着比特币现金为大量采用做好准备
  9. 说说关于JVM三色标记算法
  10. Java 微服务框架选型(Dubbo 和 Spring Cloud?),大厂 HR 如何面试
  11. 从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库
  12. SSM框架之多数据源配置
  13. 20190223深信服测试一面回顾
  14. tomcat 加载js 中文乱码
  15. 系统、驱动相关软件下载
  16. 各省研究与试验发展(R&D)人员全时当量(1998-2018年)
  17. 类似endnote_除了EndNote,竟还有如此强大的文献管理软件!重点是正版免费!
  18. BT 运行及内网穿透原理
  19. 主流智能手机屏幕材质介绍 及 LCD闪屏现象分析
  20. xingtai - 学习九九乘法表和皇帝的米粒

热门文章

  1. 基于Vue+Node.js的健身房会员管理系统
  2. 计算机信息系统的基础,信息系统基础:信息系统概念、功能、类型
  3. Properties
  4. citespace与mysql_CiteSpace与MySQL数据库的连接.PDF
  5. CentOS7 安装宝塔+安全狗
  6. 金融学习之六——投资比例最优化求解
  7. 计算机主机箱连接线路,电脑机箱与主板连线教程
  8. 出国(东南亚)工作的华为数通工程师机会,欢迎投递简历
  9. alertdialog怎么水平排列_网图骗人?别墅挂画怎么挂都不好看?答案在这里
  10. spring cloud入门_124springcloudEureka入门学习