事务ACID如何定义,事务隔离性解决的问题
挚享科技 2018.4.8
事务的四个特性:
1. 原子性: 同一个事务的多个操作,要么都成功,要么全部失败回滚。
2. 一致性: 事务必须确保数据库从一个一致性状态变换为另一个一致性状态。 其实就是操作完成后数据库仍然满足完整性约束。比如ab 工500,转账后合计应该还是500.
3. 隔离性 : 多个事务并发执行时,一个事务的执行不影响其他事务的执行。
4. 持久性: 事务提交完成后数据得到固化,对数据库的修改永久保存了。
不考虑事务隔离性会导致的问题
我们以X表的 count 为例子
1. 第一类丢失更新: 也叫回滚丢失: 假设两个事务都去更新count,读取到count 都是100, A事务成功,更新count到101 ,但是B事务更新失败回滚count到100.导致A事务的更新丢失了
2. 脏读 : 事务B读取了事务A修改但未正式提交的更新。 事务更新count 到101 ,但未提交。此时事务B读取count为101 ,然后加1 变为102,提交成功。但是A 由于某种原因回滚了。就导致count 变成102 。
3. 不可重复读 : 同一个事务里对count 做多次查询结果不一致。 事务A 第一次读count 是100, 此时事务B更新提交了count 到101 。。事务A又读了一次count .两次读取结果不一致。
4. 第二类丢失更新: 又叫覆盖丢失。 事务A,B 都读到count 是100,然后都去更新,结果是101. 实际应该是102 ,造成有一个事务的更新被覆盖丢失了。
5. 幻读 :和不可重复读类似(不可重复读重点在update e , 幻读重点在insert和 delete)。只是不是针对数据的值而是针对的数据的条数,就是一个事务两次查询 X 表的数据条数不一致。。
三种隔离级别
Read Commited : 解决1,2 。。 一个事务只能看到已经提交的更新,看不到未提交的更新。。
Repeatable Read : 解决 1,2,3,4, 只要存在读该行数据,就禁止写。。
Serializable : 全部解决
事务ACID如何定义,事务隔离性解决的问题的更多相关文章
- 事务的ACID和四个隔离级别
在实际的业务场景中,并发读写引出了和事务控制的需求.优秀的事务处理能力是关系型数据库(特别是oracle等商用RDBMS)相对于正当风口的NoSQL数据库的一大亮点.但这也从另一方面说明了事务控制的复 ...
- 跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现
提到MySQL的事务,我相信对MySQL有了解的同学都能聊上几句,无论是面试求职,还是日常开发,MySQL的事务都跟我们息息相关. 而事务的ACID(即原子性Atomicity.一致性Consiste ...
- 【原创】Mysql中事务ACID实现原理
引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" 你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isol ...
- Mysql中事务ACID实现原理
引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?"你:"懂,ACID嘛,原子性(Atomicity).一致性(Consistency).隔离性(Isola ...
- spring 传播行为与数据库事务ACID
数据库事务ACID特性 数据库事务正确执行的4个基础要素是原子性(Atomicity).一致性(Consistency).隔离性(Isolation)和持久性(Durability). •原子性:整个 ...
- 【转】Mysql中事务ACID实现原理
转自:https://www.cnblogs.com/rjzheng/p/10841031.html 作者:孤独烟 引言 照例,我们先来一个场景~ 面试官:"知道事务的四大特性么?" ...
- spring事务:事务控制方式,使用AOP控制事务,七种事务传播行为,声明事务,模板对象,模板对象原理分析
知识点梳理 课堂讲义 1)事务回顾 1.1)什么是事务-视频01 事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败. 1.2)事务的作用 事务特征(ACID) 原子 ...
- MySQL--事务,隔离性和隔离级别
事务 事务就是一组数据库操作,要么全部执行成功,要么全部执行失败,在MySQL中,事务是依靠存储引擎层实现的. ACID(Atomicity,Consistency,Isolation,Durabil ...
- 事务四大特征:原子性,一致性,隔离性和持久性(ACID)
一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. [sql] ...
随机推荐
- 数据类型&分支流程控制(2)
1.数据类型 1.数据类型 局部变量:书写在方法中的变量: 全局变量:书写在类中,与方法平级的变量: -如果没有给变量赋初值 -全局变量会默认拥有一个初始值 -局部变量将没有初始值,这个时候不能使用这 ...
- Centos新增group和user
新增group groupadd hadoop 新增用户 useradd -d /usr/hadoop -g hadoop -m hadoop 设置密码 passwd hadoop
- sqlmap自动注入
基于python2.7开发 git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
- elasticsearch 不同集群数据同步
采用快照方式 1.源集群采用NFS,注意权限 2.共享目录完成后,在所有ES服务器上挂载为同一目录 3.创建快照仓库 put _snapshot/my_backup{ "type" ...
- openstack(pike 版)集群部署(一)----基础环境部署
一.环境 1.系统: a.CentOS Linux release 7.4.1708 (Core) b.更新yum源和安装常用软件 # yum -y install epel-release ba ...
- Python开发【第三篇】:Python函数
set 无序,不重复,可嵌套. 函数 创建函数: 1.def关键字,创建函数 2.函数名 3.() 4.函数体 5.返回值 发邮件函数 def ...
- 多线程通信(wait和notify)
线程通信概念: 线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一.当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时 ...
- swift - 接入听云监测 - 问题
1. 正常下载 探针SDK:https://report.tingyun.com/mobile-web/#/onlyHeader/sdkDownload 2.按步骤接入 ,添加库啊,什么的URLSc ...
- Android 中 IntentService 的优点
简而言之:可以处理异步请求,任务完成会自动停止自己. IntentService是一个通过Context.startService(Intent)启动可以处理异步请求的Service,使用时你只需要 ...
- ApplicationContextAware的使用
一.这个接口有什么用? 当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean.换句话说,就是这个类可以 ...