MySQL(6)— 事务
六、事务
ACID: 原子性、一致性、隔离性和持久性
- 原子性(atomicity) :一组事务,不能再细分了,其中的sql, 要么全部提交成功,要么全部失败回滚,不能只提交其中的一部分操作。
- 一致性(consistency) :一组事务里面的数据总量,总是一致的,不会凭空增加或减少。
- 隔离性(isolation) :两组事务执行时,各自独立,互不影响!
- 持久性(durability) :事务一旦提交,数据更改将持久化的存储到数据库文件中,不会因为外界物理因素而改变。
隔离性可能导致的问题:
- 脏读:指一个事务读取了另外一个事务未提交的数据。 
- 不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同。(场合: 修改) - 同样的条件, 你读取过的数据, 再次读取出来发现值不一样了 
- 幻读: 是指在一个事务内读取到了别的事务增删后的数据,导致前后读取不一致。 - (场合: 新增 或者 删除 。) 
 同样的条件, 第1次和第2次读出来的记录数不一样
参考博客 : https://blog.csdn.net/dengjili/article/details/82468576
精炼解释:
- 不可重复读的重点是修改: - 同样的条件, 你读取过的数据, 再次读取出来发现值不一样了 
- 幻读的重点在于 新增或者删除 - 同样的条件, 第1次和第2次读出来的记录数不一样 
当然, 从总的结果来看, 似乎两者都表现为两次读取的结果不一致.
但如果你从控制的角度来看, 两者的区别就比较大
- 对于前者, 只需要锁住满足条件的记录
- 对于后者, 要锁住满足条件及其相近的记录
参考博客:https://blog.csdn.net/jdnicky/article/details/91493719
事务执行流程
sql 中具体语法结构:
- 关闭默认设置的事务自动提交
- 开启一个事务
- 编写sql
- 提交 (commit) 或者 回滚 (rollback)
- 恢复默认设置的事务自动提交
set autocommit = 0  -- 关闭事务自动提交
start transaction  -- 开启一个事务
update account set money = money - 500 where name = 'A'  -- A给B转账500,A账户减500
update account set money = money + 500 where name = 'B'  -- B收到转账500,B账户加500
conmiit;  -- 提交事务,数据持久化
rollback;  -- 回滚到未提交事务前的状态
set autocommit = 1  -- 恢复事务自动提交
MySQL(6)— 事务的更多相关文章
- MySQL 数据库事务与复制
		好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ... 
- Mysql分布式事务
		关于Mysql分布式事务介绍,可参考:http://blog.csdn.net/luckyjiuyi/article/details/46955337 分为两个阶段:准备和执行阶段.有两个角色:事务的 ... 
- mysql的事务和select...for update
		一.mysql的事务mysql的事务有两种方式:1.SET AUTOCOMMIT=0;也就是关闭了自动提交,那么任何commit或rollback语句都可以触发事务提交;如果SET AUTOCOMMI ... 
- MySQL的事务
		MySQL的事务 1.事务:事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行. 2.事务具备的四个特性(简称为ACID性): (1)原子性(Atomic ... 
- mysql 分布式事务
		php + mysql 分布式事务 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元: 事务应该具有4个属性:原子性.一致性.隔离性.持续性 原子性(atomicit ... 
- MySQL之事务隔离级别--转载
		转自:http://793404905.blog.51cto.com/6179428/1615550 本文通过实例展示MySQL事务的四种隔离级别. 1 概念阐述 1)Read Uncommitted ... 
- MySQL数据库事务剖析
		MySQL数据库事务剖析 事务就是一组原子性的SQL查询,是一个独立的执行单元.事务内的语句,要么全部执行成功,要么全部执行失败. 1.事务的标准特征 一个运行良好的事务处理系统,必须具备原子性.一致 ... 
- mysql数据库事务详细剖析
		在写之前交代一下背景吧! 做开发也好久了,没怎么整理过知识,现在剖析一下自己对数据库事务的认识,以前用sqlserver,现在转java后又用mysql.oracle.我这块就主要解释一下mysql数 ... 
- Mysql数据库事务隔离级别
		事务(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列.事务ACID属性,即原子性(Atomicity).一致性(Consistency ... 
- 后端分布式系列:分布式存储-MySQL 数据库事务与复制
		好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适.最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类.结合实际工作中碰到的问题,以寻找答案的方式来剖 ... 
随机推荐
- vue与众不同的学习方式,让她年薪200多万
			学习vue正确思路,是先学vue-cli,再学vue.js单文件引用的用法,这样会在极短时间内撤底撑握vue,如果先学vue.js单文件用法,再去学vue-cli4,可以说是重新学vue,,,,难处大 ... 
- OpenWrt-19.07.2 For HC5861(极路由3) /HiWiFi/Gee最新固件,极路由3刷openwrt
			OpenWrt For HiWiFi(HC5861) 自编译精减固件,极路由3自用固件 HC5861-uboot.bin v19.07.2 下载 支持 NTFS 读写 支持 Wi-Fi 5G 驱动 默 ... 
- centos6安装创建kvm虚拟机
			的虚拟机名 virsh domid name # 显示虚拟机id号 virsh domuuid name ... 
- Codeforces Round #561 (Div. 2) A. Silent Classroom(贪心)
			A. Silent Classroom time limit per test1 second memory limit per test256 megabytes inputstandard inp ... 
- 顺序表的C语言实现
			在现实应用中,有两种实现线性表数据元素存储功能的方法,分别是顺序存储结构和链式存储结构.顺序表操作是最简单的操作线性表的方法.下面的代码实现了顺序表的几种简单的操作.代码如下 //start from ... 
- 06  __init__ 和 __new__的关系和不同
			一. 双下new 和 双下init 关系 首先从__new__(cls,a,b,c)的参数说说起,__new__方法的第一个参数是这个类,而其余的参数会在调用成功后全部传递给__init__方法初始化 ... 
- POJ2686(状压)
			描述: \(m个城市有p条双向道路.道路的花费是道路的距离/票上的数字.给出n张票,求a->b的最短路\). 开始本来想老套路把城市状态来压缩,但城市最多可以有30个,故考虑把船票压缩. 定义\ ... 
- 王颖奇 20171010129《面向对象程序设计(java)》第十四周学习总结
			实验十四 Swing图形界面组件 理论知识知识点: 1.Swing和MVC设计模式2.布局管理器3.文本输入4.选择组件5.菜单6.对话框 实验时间 2018-11-29 1.实验目的与要求 (1) ... 
- 3、Hive-sql优化,数据倾斜处理
			一.Hive-sql优化 #增加reducer任务数量(拉取数量分流) ; #在同一个sql中的不同的job是否可以同时运行,默认为false set hive.exec.parallel=true; ... 
- 【Kafka】数据分区策略
			数据分区策略 四种策略 一.指定分区号,数据会直接发送到所指定的分区 二.没有指定分区号,指定了数据的key,可以通过key获取hashCode决定数据发送到哪个分区 三.都没有指定的话,会采取rou ... 
