事务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] ...
随机推荐
- EasyUI值的清空与获取
清空: 一般值 $("#searchx").val(""); 时间选择框 $('#starttime').datetimebox('setValue', '') ...
- Python图片识别找坐标(appium通过识别图片点击坐标)
***如果只想了解图片相似度识别,直接看第一步即可 ***如果想了解appium根据图片识别点击坐标,需要看第一.二.三步 背景|在做UI测试时,发现iOS自定义的UI控件,appium识别不到. ...
- 【C++】STL算法之remove_if
之前写过这样一段代码: auto iter=remove_if(AllEdges.begin(),AllEdges.end(),[&](Edge* edge){return _isEedge( ...
- java面试:HR面
就算技术面全都答对了,有时也会因为HR面没有认真对待而拿不到offer. HR的想法 找工作难,招人也好难.HR想要招什么样的人? 稳定.如果你跳槽频繁,HR可能会担心你干了没一年就跑路了,她又得重新 ...
- mysql5.6 基于Binlog ROW记录方式进行数据恢复(无备份)
数据库配置注意事项 /etc/my.cnf 必须要开户binlog支持,字符集要求 是utf8 binlog类型为row server-id=121 log_bin=/home/mysqllog bi ...
- 牛客网练习赛43-C(图论)
题目链接:https://ac.nowcoder.com/acm/contest/548/C 题意:有n个知识点,学会每个知识点花T[i],已经学会了其中k个知识点,有m组关系,t1,t2,t3,表示 ...
- 第十章 优先级队列 (a1)需求与动机
- 倒计时问题java
public static void main(String args[]){ Scanner sc = new Scanner(); int x = sc.nextInt(); System.out ...
- Visual Studio 2015 自动生成 的大文件xxx.vc.db的删除问题
用vs2015创建Visual C++项目,编写生成后,每次都会生成一个project_name.VC.db文件,而且会随着你工程修改运行变的越来越大. project_name.VC.db是sqli ...
- Linux配置Nginx负载均衡
nginx配置负载均衡其实很简单,一直还以为负载均衡是个很高端人士玩的 首先先了解下负载均衡,假设一个场景,如果有1000个客户同时访问你服务器时,而你只有一台服务器的Nginx,且只有一个MySQL ...