一、事务。

事务指的是连续的对数据库操作的集合,对于一个事务中的所有的数据库操作,要么全部成功,要么全部失败。

允许多个用户同时使用的数据可系统为多用户数据库系统。多用户数据库系统的特点是:在同一时刻,并发运行的事务数量可以达到成千上万个。

多事务执行方式有三种:

1)事务的串行执行;(每个时刻只有一个事务执行,不能充分利用系统资源,发挥数据库共享资源的特点)

2)事务的交叉并发方式;(单处理机系统)

3)事务的同时并发方式;(多处理机系统,每个处理机运行一个事务,也是事务并发执行最理想的方式,受制于硬件环境,需要更复杂的并发控 制机制)

二、并发控制。

并发控制是和事务紧密相关的概念,并发控制通常是指对事务的并发控制。事务是并发控制的基本单位。数据库管理系统必须提供并发控制机制,并发控制是衡量一个数据库管理系统性能的重要指标之一。并发控制机制的任务是保证数据的隔离性和一致性。

并发操作带来的数据不一致性可以分为三部分:

1)丢失更新;

2)不可重复读;

3)读“脏”数据;

如上图所示:

1)丢失更新

丢失更新指的是事务T1和T2之间为“修改--修改”的关系。比如,数据库中原本机票价格为1000元,事务T1为将机票价格+100元,事务T1读到机票价格为1000元,执行操作+100元,事务T2也读取机票价格为1000元,将机票价格+200元,事务T1提交数据,之后事务T2提交数据,机票价格变为事务T2的1200元,事务T1的更新操作被覆盖掉了,叫做丢失更新。

2)不可重复读

不可重复读发生于事务T1和T2之间为“读--更新”的关系。其中,更新包括三类:修改、删除和插入。

  1. “读--修改”。事务T1在读机票数据为1000元,事务T2修改机票价格为1200元,事务T1想确认一下,再读出的机票价格为1200元,与第一次不一致;
  2. “读--删除”。事务T1读出数据库中有20条机票价格的数据,事务T2对此20条数据进行了删除其中2条的操作,事务T1再读出的机票价格只有18条信息,与第一次不一致,导致其中2条数据莫名的消失了;
  3. “读--插入”。事务T1读出数据库中有20条数据,事务T2插入两条数据,事务T1再一次读,得到的结果有22条数据,与第一次读出的条数不一致,莫名多了两条数据。
其中“读--删除”和“读--插入”会导致两次读出的结果莫名的增加或减少,因此,这两种情况又叫做“幻影读”。

3)读“脏”数据

读“脏”数据发生于事务T1和T2之间为“修改--读”的关系。比如,机票价格为1000元,T1将机票价格修改为1200元并写回到磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,机票价格回到1000元,T2读到的数据和数据库中的不一致,此为读“脏”数据。
数据不一致的原因:并发控制破坏了事务的隔离性。
并发控制的主要技术:
1.封锁
2.时间戳
3.乐观控制法
4.多版本并发控制

数据库—事务—并发控制技术相关推荐

  1. 简述数据库事务并发机制

    转载:https://blog.csdn.net/justloveyou_/article/details/70312810 事务是最小的逻辑执行单元,也是数据库并发控制的基本单位,其执行的结果必须使 ...

  2. 数据库-事务并发操作问题及并发的控制

    事务并发操作出现几种问题 所谓事务,是用户定义的一个数据库操作序列,是数据库环境中的逻辑工作单元, 是一个不可分割的整体. 事务的这个4个特性简称为ACID特性,事务ACID特性可能遭到破坏的因素有: ...

  3. JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题

    Hibernate的检索方式  Hibernate提供了以下几种检索对象的方式: 导航对象图检索方式:根据已经加载的对象导航到其他对象. OID检索方式:按照对象的OID来检索对象. HQL检索方式: ...

  4. 【数据库】MySQL事务并发、MVCC原理及实现

    文章目录 ACID 隔离性分为四个级别 数据库事务并发可能出现的问题 读已提交等级下解决脏读办法 可重复读解决不可重复读 MySQL 是如何解决幻读的 快照读和当前读 那什么又是悲观锁呢 MySQL ...

  5. spring 事务隔离级别和传播行为_Java工程师面试1000题146-Spring数据库事务传播属性和隔离级别...

    146.简介一下Spring支持的数据库事务传播属性和隔离级别 介绍Spring所支持的事务和传播属性之前,我们先了解一下SpringBean的作用域,与此题无关,仅做一下简单记录. 在Spring中 ...

  6. mysql事务 并发_Mysql关于事务并发带来的问题

    MySQL从5.5.8开始,Innodb就是默认的存储引擎,Innodb最大的特点是:支持事务.支持行级锁. 既然支持事务,那么就会有处理并发事务带来的问题:更新丢失.脏读.不可重复读.幻读:相应的为 ...

  7. 9.1 数据库事务概述

    9.1  数据库事务概述http://www.cnblogs.com/duanxz/p/3788190.html 事务首先是一系列操作组成的工作单元,该工作单元内的操作是不可分割的,即要么所有操作都做 ...

  8. Spring Boot中声明式数据库事务使用与理解

    JDBC的数据库事务 传统JDBC的数据库事务的一个示例如下代码所示,该示例仅为一个insertUser方法的数据库事务过程.可以看到,如果还存在很多其他的数据库事务需要,则需要编写很多类似于如下的代 ...

  9. 数据库事务及MySQL实战

    该文章将讨论以下主题: 数据库事务及其特点 数据库事务并发执行的相关问题 数据库锁机制及死锁 事务隔离级别 MySQL实战 数据库事务及其特点 数据库事务是指为了完成某个业务逻辑而形成的一组和数据库相 ...

  10. 数据库事务原理及并发、死锁

    1. 什么是数据库事务 1.1 数据库事务是指作为单个逻辑工作单元执行的一系列操作(SQL语句).这些操作要么全部执行,要么全部不执行. 1.2 通过ACID实现数据库事务模型 1.2.1 原子性(A ...

最新文章

  1. 《网络攻防实践》第二周作业
  2. 标准CC++获取当前时间(毫秒级)
  3. 汇总内表数据:at end of方法和collect方法
  4. 信息系统项目管理师-项目立项管理考点笔记
  5. linux查看上次重启日志和ip,Linux實時查看日志,訪問前10IP 和相關命令
  6. java虚拟机 山寨机_十年前的山寨机居然有系统?没错,还是纯国产的
  7. 从月薪2300女工到年薪70万谷歌程序员:人生,永远不要给自己设限
  8. Deepin 系统下安装VMware并激活
  9. RHEL 6.5----haproxy实现负载均衡
  10. C++中使用GSoap
  11. Volley(五)—— 自定义Request
  12. AltiumDesigner(三):PCB导出Gerber文件及各个Gerber文件说明
  13. 借用传感器用计算机测速度题,传感器原理及应用试题库(已做)
  14. win7 OneNote不能登录一直登录
  15. mplayer播放器管道重构版
  16. 使用backdrop-filter实现毛玻璃效果
  17. 核壳油溶性CaSe/CdS/ZnS量子点修饰DADA与MPA-CdSe量子点的制备过程
  18. 红米k40开启呼叫转移方法介绍
  19. 有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,各有一个main函数,谁在前先执行谁!
  20. 外企做开发,爽吗?(HSBC篇)

热门文章

  1. 【图像压缩】基于matlab GUI DCT图像压缩【含Matlab源码 842期】
  2. 【手写数字识别】基于matlab GUI贝叶斯+线性分类器手写数字识别【含Matlab源码 828期】
  3. 【图像分割】基于matlab GUI遗传算法Otsu图像分割【含Matlab源码 734期】
  4. Python模块的导入
  5. signature=0fa666ae90cad1ed3ef6de6b7db4e5a3,A meta-analysis on correlations of
  6. html带表单和div的素材,用DIV+CSSwe标准布局网页表单的一个例子
  7. php valid函数,PHP函数uasort()在类中的使用问题解决
  8. c++ opencv mat_【CV实战】OpenCV—Hello world代码示例
  9. 在Linux中,用.swp文件恢复未保存的文件
  10. SRM 403(1-250pt, 1-500pt)