例子1:
举一个例子来进行说明,例如转账操作:A账户要转账给B账户,那么A账户上减少的钱数和B账户上增加的钱数必须一致,也就是说A账户的转出操作和B账户的转入操作要么全部执行,要么全不执行;如果其中一个操作出现异常而没有执行的话,就会导致账户A和账户B的转入转出金额不一致的情况,事实上这种情况是不允许发生的,所以为了防止这种情况的发生,需要使用事务处理。
例子2:
在淘宝购物下订单的时候,商家库存要减少,订单增加记录,付款我的账号少100元…操作要么全部执行,要么全不执行

一、事务的概念:

事务(Transaction)指的是一个操作序列,该操作序列中的多个操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位

二、事务的特性

事务处理可以确保除非事务性序列内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的序列,可以简化错误恢复并使应用程序更加可靠。
但并不是所有的操作序列都可以称为事务,这是因为一个操作序列要成为事务,必须满足事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这四个特性简称为ACID特性。

1)原子性
原子是自然界最小的颗粒,具有不可再分的特性。事务中的所有操作可以看做一个原子,事务是应用中不可再分的最小的逻辑执行体。使用事务对数据进行修改的操作序列,要么全部执行,要么全不执行。通常,某个事务中的操作都具有共同的目标,并且是相互依赖的。如果数据库系统只执行这些操作中的一部分,则可能会破坏事务的总体目标,而原子性消除了系统只处理部分操作的可能性。

2) 一致性
一致性是指事务执行的结果必须使数据库从一个一致性状态,变到另一个一致性状态。当数据库中只包含事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性来保证的。例如:在转账时,只有保证转出和转入的金额一致才能构成事务。也就是说事务发生前和发生后,数据的总额依然匹配。

3) 隔离性
隔离性是指各个事务的执行互不干扰,任意一个事务的内部操作对其他并发的事务,都是隔离的。也就是说:并发执行的事务之间既不能看到对方的中间状态,也不能相互影响。
例如:在转账时,只有当A账户中的转出和B账户中转入操作都执行成功后才能看到A账户中的金额减少以及B账户中的金额增多。并且其他的事务对于转账操作的事务是不能产生任何影响的。

4)持久性
持久性指事务一旦提交,对数据所做的任何改变,都要记录到永久存储器中,通常是保存进物理数据库,即使数据库出现故障,提交的数据也应该能够恢复。但如果是由于外部原因导致的数据库故障,如硬盘被损坏,那么之前提交的数据则有可能会丢失。

三、sql展示:使用事务保证转账安全

创建账户表:

create table account(id int primary key auto_increment,uname varchar(10) not null,balance double
);

查看账户表

select * from account

插入数据

insert into account values(null,'kb',2000),(null,'kd',2000)

kb给kd转账200元

update account set balance=balance-200 where id=1;
update account set balance=balance+200 where id=2;

同时执行上面2条sql语句,运行结果:符合逻辑

默认一个DML语句是一个事务,所以上面的操作执行了2个事务
怎么判断是不是一个事务呢?第二条sql语句错误

update account set balance=balance-200 where id=1;
update account set balance=balance2+200 where id=2;

运行结果:id=1的账户钱凭空消失了

必须让上面的2个操作控制在一个事务中

开启事务

start transaction
update account set balance=balance-200 where id=1;
update account set balance=balance+200 where id=2;

手动回滚:刚才操作全部取消

ROLLBACK;

手动提交

commit

在回滚和提交之前,数据库中的数据都是操作的缓冲中的数据,而不是数据库真实的数据

MySQL—事务及其特征相关推荐

  1. Mysql事务以及加锁机制事务的特征ACID

    Mysql事务以及加锁机制 事务的特征ACID,即原子性.一致性.隔离性.持久性. 原子性保证一个事务为一个最小的单元,内部不可分割: 一致性保证事务中的每个操作线程不可单独提交,成功则一起提交,不成 ...

  2. mysql事务手写笔记_兴奋了!阿里技术官手写“MySQL笔记”,传授你年薪百万级干货...

    前言 MySQL重要吗?重要!为什么重要?因为它在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展.阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的.My ...

  3. mysql事务并发控制_mysql事务和多版本并发控制详解

    一.mysql事务 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎可以成功执行该组全部语句,那么就执行该组语句.如果其中有任何一条语句不能执行,那么所有的语句都不会执行.也就 ...

  4. mysql事务四个安全级别_四个MySQL事务隔离级别的详细说明

    本文中的实验测试环境: Windows 10 + cmd + MySQL5.6.36 + InnoDB 首先,交易的基本要素(ACID) 1. 原子性: 事务开始后 2. 一致性(Consistenc ...

  5. MySQL事务以及加锁机制

    事务的特征ACID,即原子性.一致性.隔离性.持久性. 原子性保证一个事务为一个最小的单元,内部不可分割: 一致性保证事务中的每个操作线程不可单独提交,成功则一起提交,不成功则事务回滚: 隔离性保证不 ...

  6. mysql查看版本号_十分钟了解MySQL事务机制

    读书百遍其义自现. MySQL数据库在我们平时工作学习中的使用频率是相当之高,彻底掌握MySQL的事务机制对我们平时工作会有非常大的帮助,仔细回忆一下,你是否对MySQL事务相关的知识是否完全掌握?是 ...

  7. 超干货!为了让你彻底弄懂MySQL事务日志,我通宵肝出了这份图解!

    还记得刚上研究生的时候,导师常挂在嘴边的一句话,"科研的基础不过就是数据而已."如今看来,无论是人文社科,还是自然科学,或许都可在一定程度上看作是数据的科学. 倘若剥开研究领域的外 ...

  8. mysql事务会不会上锁_MySQL事务以及加锁机制

    事务的特征ACID,即原子性.一致性.隔离性.持久性. 原子性保证一个事务为一个最小的单元,内部不可分割: 一致性保证事务中的每个操作线程不可单独提交,成功则一起提交,不成功则事务回滚: 隔离性保证不 ...

  9. mysql 事务中锁处理_MySQL事务处理及锁定_MySQL

    bitsCN.com MySQL事务处理及锁定 事务处理(Transaction)是将多个更新命令作为一个整体来执行,从而保证数据整合性的机制. 存储引擎(Storage Engine) MySQL ...

最新文章

  1. 科技城|从专利布局看人工智能领域全球竞争与中国面临的挑战
  2. 皮一皮:现在真是键盘侠的年代阿....
  3. 号称超过yolox和yolov5的PP-YoLoE
  4. php连接redis报错,PHP使用phpredis链接redis错误
  5. MySQL - 库表设计之IP和TIMESTAMP的处理
  6. php回调函数如何执行顺序,PHP回调函数调用方式
  7. OpenGL 关于旧版glut和新版本glfw和glad的环境配置
  8. strongswan技术
  9. .net 新添加的项目未加载_JDK 13 新特性一览
  10. SAP CRM呼叫中心和社交媒体集成的所有BC set实现列表
  11. matlab m序列,m序列(M序列与m序列区别)
  12. 哈希桶 entry_聊一聊面试常问的几大哈希算法问题,这些你都会了嘛??
  13. 移动端H5设计稿的问题与解决办法汇总
  14. awk正则匹配nginx日志【原创】
  15. Asp.net mvc 网站之速度优化 -- Memcache
  16. python中compile函数_Python compile函数有什么用?
  17. Dracoo Master天龙卡牌大师
  18. 跟随器为何要加反馈电阻?
  19. 100ms的延迟让亚马逊损失1%销量,如何快速降低网站延迟?
  20. Android中使用dimen定义尺寸

热门文章

  1. 电路计算机辅助设计上海电力学院,上海电力学院电路计算机辅助设计二端口电路的设计.doc...
  2. add-apt-repository:找不到命令_手把手教你使用nodejs编写cli(命令行)
  3. 一文了解2020年中国液冷数据中心行业市场现状与发展前景分析市场规模有望破千亿...
  4. 2020年十大数据中心行业趋势
  5. 探讨打造会呼吸的数据中心
  6. linux ie8找不到,ie浏览器不见了怎么办 三种方法搞定【图文教程】
  7. jspider java运行_Web Spider 网络蜘蛛爬虫
  8. DL之DenseNet:DenseNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  9. ML之xgboost:利用xgboost算法(自带,特征重要性可视化+且作为阈值训练模型)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  10. 成功解决coordinate_descent.py:491: ConvergenceWarning: Objective did not converge. You might want to inc