事务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] ...
随机推荐
- Mybatis返回List<Map<K,V>>
最终映射的字段名 会被作为 hashMap 的 key , <!-- TODO 测试返回 HashMap--> <resultMap id="testResultMap&q ...
- 原生js实现ajax与jquery的ajax库,及json
这是一篇笔记博客, Ajax: 和服务器进行数据交换(异步) 用js实现复杂的原理:用于发送请求的对象在不同的浏览器中是不同的 同源策略:ajax发送请求的url地址与服务器地址必须是同一域名,协议, ...
- 二进制中1的个数(python)
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. # -*- coding:utf-8 -*- class Solution: def NumberOf1(self, n): ...
- verilog之inout
1.inout 类型的data信号 写操作有效时(rd_wr_l=0):data端口输入信号,此时data为高阻态,允许对其进行赋值. 读操作有效时(rd_wr_l=1):data端口输出信号,此时d ...
- 4. Median of Two Sorted Arrays (二分法;递归的结束条件)
There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...
- AltiumDesigner 网络标号放置技巧
我们在使用AD画图的过程中,灵活的使用一些小技巧可以使我们的工作事半功倍,今天给大家介绍一种在画原理图过程中的小技巧. 我们在画原理图过程中经常会放置网络标号,尤其是很多芯片管脚上,例如现在我需要在这 ...
- 【python】入门指南1
基础的数据结构:int, float, string 注意:python入门系列的文章的示例均使用python3来完成. #!/bin/python a = 1 b = 1.0 c = 'string ...
- Linux磁盘挂载详述
1.查看硬盘信息及分区 一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘,设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息. [root@localhost home]# fdis ...
- linux命令学习之:ps
Linux中的ps命令是Process Status的缩写.ps命令用于报告当前系统的进程状态,列出系统中当前运行的那些进程.可以搭配kill指令随时中断.删除不必要的程序. 要对进程进行监测和控制, ...
- 微信小程序基础架构
一个微信小程序界面由一个页面描述文件,一个页面逻辑文件,一个样式表文件来进行描述 在主目录中的三个以app开头的文件就是微信小程序的主描述文件 app.js :主逻辑文件,用来注册小程序 app.js ...