事务(二)——事务的并发问题
上一篇简单分析了事务的来源,事务的概念以及事务解决的主要问题。那么事务究竟是解决了哪些具体问题呢?这些问题具体又是怎么产生的呢?
事务是并发操作的基本单位,保证事务ACDI特性是事务处理的重要任务,而事务ACDI特性遭到破坏的一个直接原因就是是多个事务对数据库(共享资源)的并发操作引起的,为了保证事务的隔离性与一致性。DBMS必须对事物进行合理正确的调度。由于事物的并发操作可能导致事务之间进行交织操作,可能会出现数据不一致的问题,这种问题我们称之为“并发问题”。
事务的并发问题典型的有三种:丢失更新问题、不可重复读问题,脏读问题。
1、丢失更新问题
设两个事务T1,T2,当他们同时读入一个数据加以修改时,事务T2提交的结果会破坏事务T1提交的结果,由此导致T1的修改被丢失了,这就是由于数据库并发操作引起的数据一致性问题。
特点:事务 T1,T2对统一数据进行修改操作。
解决丢失问题思路:悲观锁,乐观锁
2、不可重复度
设两个事务T1,T2,不可重复读是指事务T1读取数据之后,事务T2对该数据进行了修改操作,使事务T1无法再现上次的读取结果。不可重复度一般包含以下三种情况:
(1) 事务T1读取数据后,事务T2对其做了修改,当事务T1再次读取该数据的时候得到了与之前读取不同的值。
(2) 事务T1按照一定的条件从数据库中读取某些记录之后,事务T2删除了相同条件下的部分数据记录,当事务按照相同条件读取数据时,发现某些记录神秘的消失了。
(3) 事务T1按照一定的条件从数据库中读取某些记录之后,事务T2在相同条件下增加了部分数据记录,当事务按照相同条件读取数据时,发现得到的数据结果集比之前增加了。
特点:事务T1对数据进行修改,事务T2对数据进行读
3、读脏数据
设事务T1,T2,读脏数据是指,事务T1修改了某一数据并将数据写回了磁盘里,事务T2也读取了相同的数据,事务T1由于某些操作进行了撤销操作,这时事务T1已经被修改过的数据恢复了原来的值,事务T2读到的数据就与数据库中的数据不一致,则事务T2读到的数据就是一条“脏”数据,即不正确的数据。
特点:事务T1对数据进行修改,事务T2对数据进行读取
导致上述3种数据不一致的主要原因时并发操作破坏了事务的隔离性,并发控制机制就是正确的调度这些并发操作,使一个用户的事务的执行不受其他事物的干扰从而避免造成数据不一致的现象。
那么都有哪些手段呢?封锁,时间戳,乐观控制法和多版本控制。
事务(二)——事务的并发问题相关推荐
- 分布式事务二——解决思路
文章目录 一.分布式事务的思路 1.1 CAP定理 1.1.1 Partition tolerance 1.1.2 Consistency 1.1.3 Availability 1.1.4 Consi ...
- T-SQL笔记3:事务、锁定和并发
T-SQL笔记3:事务.锁定和并发 本章摘要 1:事务 1.1:显式事务 1.2:使用DBCC OPENTRAN显示最早的活动事务 2:锁定 2.1:查看锁的活动 3:并发影响及隔离级别 3.1:并发 ...
- 《零基础》MySQL 事务(二十二)
MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成 ...
- mysql乐观锁与事务_Mysql中的读锁,写锁,乐观锁及事务隔离级别和并发问题
mysql读锁,写锁,乐观锁 读锁,也叫共享锁(shared lock) SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE 写锁,也叫排他 ...
- 分布式事务二 基础理论
分布式事务二 基础理论 前言: 书接上文<分布式事务一 分布式事务基础概念>,我们了解到了分布式事务的基础概念.与本地事务不同的是,分布式系统之所以叫分布式,是因为提供服务的各个节点分布在 ...
- 事务管理学习笔记:事务特性与常见并发异常
事务管理笔记 什么是事务? 事务是由N步数据库操作序列组成的逻辑执行单元,这系列操作要么全执行,要么全不执行. 事务特性 原子性:事务是应用中不可再分的最下执行体 一致性:事务的执行结果,必须数据从一 ...
- [原创]商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸)
商城系统下单库存管控系列杂记(二)(并发安全和性能部分延伸) 前言 参与过几个中小型商城系统的开发,随着时间的增长,以及对系统的深入研究和测试,发现确实有很多值得推敲和商榷的地方(总有 ...
- SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...
原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...
- 每日一博 - 常见的Spring事务失效事务不回滚案例集锦
文章目录 事务不生效 方法内部调用 修复方法一 : [新加一个Service方法] 修复方法二:[在该Service类中注入自己] 修复方法三:[通过AopContent类]<---- 推荐 访 ...
- mongodb 事务_MongoDB 事务 — 基础入门篇
MongoDB 单文档原生支持原子性,也具备事务的特性,但是我们说起事务,通常是指在多文档中的实现,因此,MongoDB 在 4.0 版本支持了多文档事务,4.0 对应于复制集的多表.多行,后续又在 ...
最新文章
- 白宫启动AI.GOV计划,呼吁各界携手共同推进AI发展
- [轉]c#从Excel中读取图片
- flex 设置换行flex-wrap
- 部署在Netweaver上的Fiori应用的WebContent文件夹
- Jmeter插件-dubbo
- Codeforces 1091E New Year and the Acquaintance Estimation Erdős–Gallai定理
- 带你彻底弄明白!javaswitchcase语句例子
- ES6新特性总结 一
- java 正则表达式 替换 html,java 正则表达式 替换 html
- 网络工程师中级--上午科目
- 微信图片服务器逻辑,关于图片上传原图会被压缩的解决方案
- Python中index函数用法总结
- JavaWeb下载文件时文件名乱码
- dijkstra算法详解加例题分析 NOIP 2012 文化之旅
- Windows 找不到 gpedit.msc
- react组件中箭头函数的使用
- vue整合百度地图(关键字检索)
- C语言笔试题(嵌入式软件开发)
- p20华为云电脑白屏_华为P20云电脑方案曝光:运行Windows系统
- MUSIC算法推导及代码实现
热门文章
- python中的实用案例
- 客户端渲染(BSR:Browser Side Render)、服务端渲染(SSR:Server Side Render)、搜索引擎优化、SEO(Search Engine Optimization)
- [scrum] 2011/9/21-----第一天
- 泰凌微8258入门教程:Vendor Model 的应用和案例
- 小程序自定义侧滑删除组件
- python自学入门 数据类型与转换
- 【UML系统建模】- 线图分析
- POJ1062-Expensive dowry
- 江苏省二级c语言公共基础知识,二级C语言公共基础知识
- linux 命令 读phy_Linux网络子系统之---- PHY 配置