六、事务

ACID: 原子性、一致性、隔离性和持久性

  • 原子性(atomicity) :一组事务,不能再细分了,其中的sql, 要么全部提交成功,要么全部失败回滚,不能只提交其中的一部分操作。
  • 一致性(consistency) :一组事务里面的数据总量,总是一致的,不会凭空增加或减少。
  • 隔离性(isolation) :两组事务执行时,各自独立,互不影响!
  • 持久性(durability) :事务一旦提交,数据更改将持久化的存储到数据库文件中,不会因为外界物理因素而改变。

隔离性可能导致的问题:

  1. 脏读:指一个事务读取了另外一个事务未提交的数据。

  2. 不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同。(场合: 修改)

    同样的条件, 你读取过的数据, 再次读取出来发现值不一样了

  3. 幻读: 是指在一个事务内读取到了别的事务增删后的数据,导致前后读取不一致。

    (场合: 新增 或者 删除 。)

    同样的条件, 第1次和第2次读出来的记录数不一样

参考博客 : https://blog.csdn.net/dengjili/article/details/82468576

精炼解释:

  • 不可重复读的重点是修改:

    同样的条件, 你读取过的数据, 再次读取出来发现值不一样了

  • 幻读的重点在于 新增或者删除

    同样的条件, 第1次和第2次读出来的记录数不一样

当然, 从总的结果来看, 似乎两者都表现为两次读取的结果不一致.

但如果你从控制的角度来看, 两者的区别就比较大

  • 对于前者, 只需要锁住满足条件的记录
  • 对于后者, 要锁住满足条件及其相近的记录

参考博客:https://blog.csdn.net/jdnicky/article/details/91493719

事务执行流程

sql 中具体语法结构:

  1. 关闭默认设置的事务自动提交
  2. 开启一个事务
  3. 编写sql
  4. 提交 (commit) 或者 回滚 (rollback)
  5. 恢复默认设置的事务自动提交
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)— 事务的更多相关文章

  1. MySQL 数据库事务与复制

    好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适. 最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类. 结合实际工作中碰到的问题,以寻找答案的方式 ...

  2. Mysql分布式事务

    关于Mysql分布式事务介绍,可参考:http://blog.csdn.net/luckyjiuyi/article/details/46955337 分为两个阶段:准备和执行阶段.有两个角色:事务的 ...

  3. mysql的事务和select...for update

    一.mysql的事务mysql的事务有两种方式:1.SET AUTOCOMMIT=0;也就是关闭了自动提交,那么任何commit或rollback语句都可以触发事务提交;如果SET AUTOCOMMI ...

  4. MySQL的事务

    MySQL的事务 1.事务:事务是由一步或者几步数据库操作序列组成的逻辑执行单元,这一系列操作要么全部执行,要么全部放弃执行. 2.事务具备的四个特性(简称为ACID性): (1)原子性(Atomic ...

  5. mysql 分布式事务

    php + mysql 分布式事务 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元: 事务应该具有4个属性:原子性.一致性.隔离性.持续性 原子性(atomicit ...

  6. MySQL之事务隔离级别--转载

    转自:http://793404905.blog.51cto.com/6179428/1615550 本文通过实例展示MySQL事务的四种隔离级别. 1 概念阐述 1)Read Uncommitted ...

  7. MySQL数据库事务剖析

    MySQL数据库事务剖析 事务就是一组原子性的SQL查询,是一个独立的执行单元.事务内的语句,要么全部执行成功,要么全部执行失败. 1.事务的标准特征 一个运行良好的事务处理系统,必须具备原子性.一致 ...

  8. mysql数据库事务详细剖析

    在写之前交代一下背景吧! 做开发也好久了,没怎么整理过知识,现在剖析一下自己对数据库事务的认识,以前用sqlserver,现在转java后又用mysql.oracle.我这块就主要解释一下mysql数 ...

  9. Mysql数据库事务隔离级别

    事务(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列.事务ACID属性,即原子性(Atomicity).一致性(Consistency ...

  10. 后端分布式系列:分布式存储-MySQL 数据库事务与复制

    好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适.最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类.结合实际工作中碰到的问题,以寻找答案的方式来剖 ...

随机推荐

  1. android开发之自定义View 详解 资料整理 小冰原创整理,原创作品。

    2019独角兽企业重金招聘Python工程师标准>>> /** * 作者:David Zheng on 2015/11/7 15:38 * * 网站:http://www.93sec ...

  2. SaltStack的数据系统

    一.SaltStack数据系统的分类 1.Grains(收集的是静态数据) 官方使用文档:https://www.unixhot.com/docs/saltstack/topics/targeting ...

  3. BlackNurse攻击:4Mbps搞瘫路由器和防火墙

    研究人员宣称,最新的知名漏洞BlackNurse,是一种拒绝服务攻击,能够凭借仅仅15到18Mbps的恶意ICMP数据包就将防火墙和路由器干掉. 该攻击会滥用Internet控制报文协议(ICMP)第 ...

  4. C#读写ini

    using System; using System.IO; using System.Runtime.InteropServices; using System.Text;   namespace ...

  5. centos6.5宽带拨号上网

    CentOS6以后要安装rp-pppoe这个软件,centos之前的版本是adsl-setup命令安装. (1)查看是否安装 #rpm -qa|grep rp-pppoe 没有内容输出则没安装,若可以 ...

  6. nmcli的基本使用

    介绍NetworkManager.centos8.nmcli CentOS 7中同时支持network.service和NetworkManager.service(简称NM)2种方式配置网络,而在C ...

  7. CodeForces - 1047B Cover Points

    B. Cover Points time limit per test1 second memory limit per test256 megabytes inputstandard input o ...

  8. 图论--割边--Tarjan模板

    #include<iostream> #include<stdio.h> #include<vector> using namespace std; const i ...

  9. CentOS安装jsoncpp

    两种安装方式: 通过cmake安装 通过scons安装 cmake安装见cmake安装jsoncpp,scons安装见下文. 1. 安装scons .tar.gz export MYSCONS=/ro ...

  10. IDEA 2020.1 安装教程

    目录 IDEA 2020.1 安装教程 准备工作 破解教程 IDEA 2020.1 安装教程 IDEA 2020.1 安装教程 Win 10 版 64位操作系统 准备工作 IDEA旗舰版下载地址 je ...