转载自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/3984001.html

四.事务的四大特性(ACID)

4.1、原子性(Atomicity)

  原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败。比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行失败

4.2、一致性(Consistency)

  官网上事务一致性的概念是:事务必须使数据库从一个一致性状态变换到另外一个一致性状态。以转账为例子,A向B转账,假设转账之前这两个用户的钱加起来总共是2000,那么A向B转账之后,不管这两个账户怎么转,A用户的钱和B用户的钱加起来的总额还是2000,这个就是事务的一致性。

4.3、隔离性(Isolation)

  事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

4.4、持久性(Durability)

  持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

  事务的四大特性中最麻烦的是隔离性,下面重点介绍一下事务的隔离级别

五、事务的隔离级别

  多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。

5.1、事务不考虑隔离性可能会引发的问题  

  如果事务不考虑隔离性,可能会引发如下问题:

  1、脏读

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

     这是非常危险的,假设A向B转帐100元,对应sql语句如下所示
          1.update account set money=money+100 where name='B';    
          2.update account set money=money-100  where name='A';
        当第1条sql执行完,第2条还没执行(A未提交时),如果此时B查询自己的帐户,就会发现自己多了100元钱。如果A等B走后再回滚,B就会损失100元。  

  2、不可重复读

  不可重复读指在一个事务内读取表中的某一行数据,多次读取结果不同。
  例如银行想查询A帐户余额,第一次查询A帐户为200元,此时A向帐户内存了100元并提交了,银行接着又进行了一次查询,此时A帐户为300元了。银行两次查询不一致,可能就会很困惑,不知道哪次查询是准的。
  不可重复读和脏读的区别是,脏读是读取前一事务未提交的脏数据,不可重复读是重新读取了前一事务已提交的数据
  很多人认为这种情况就对了,无须困惑,当然是后面的为准。我们可以考虑这样一种情况,比如银行程序需要将查询结果分别输出到电脑屏幕和写到文件中,结果在一个事务中针对输出的目的地,进行的两次查询不一致,导致文件和屏幕中的结果不一致,银行工作人员就不知道以哪个为准了。

  3、虚读(幻读)

  虚读(幻读)是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致
  如丙存款100元未提交,这时银行做报表统计account表中所有用户的总额为500元,然后丙提交了,这时银行再统计发现帐户为600元了,造成虚读同样会使银行不知所措,到底以哪个为准。

转载于:https://www.cnblogs.com/lvshoutao/p/8668543.html

mysql学习--1.事务相关推荐

  1. mysql学习笔记-事务

    事务的基本要素 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据 ...

  2. 【MySQL学习】事务管理

    文章目录 一.事务的基本认识 1.1 事务的基本概念 1.2 事务的基本属性 1.3 支持事务的存储引擎 二.为什么要有事务 三.事务的基本操作 3.1 事务的提交方式 3.2 事务的操作案例 四.事 ...

  3. 【mysql学习心得——事务】

    注意:MySQL数据库引擎innodb下才支持事务,MYISAM引擎不支持事务 含义:ACID特性(原子性(Atomicity,或称不可分割性).一致性(Consistency).隔离性(Isolat ...

  4. MySQL学习笔记07【事务、用户管理和权限管理】

    MySQL 文档-黑马程序员(腾讯微云):https://share.weiyun.com/RaCdIwas 1-MySQL基础.pdf.2-MySQL约束与设计.pdf.3-MySQL多表查询与事务 ...

  5. mysql dba系统学习-数据库事务详解

    mysql dba系统学习-数据库事务详解 上个星期去面试数据库管理员的工作,笔试通过之后就是直接的面试,他问了我一个问题,叫我介绍哈数据库的事务的看法和理解,但是不知所错的没有章法的乱答一气,唉唉, ...

  6. MySQL学习笔记 04、MySQL进阶(索引、事务、锁)

    文章目录 前言 一.MySQL的目录结构 1.1.认识目录文件 1.2.配置文件设置 windows平台下设置 linux环境下设置 二.MySQL的系统架构 2.1.MySQL系统的逻辑架构: 2. ...

  7. MySQL学习思维导图(MySQL简介、SQL基础命令、约束、单表查询、多表查询、内置函数、存储过程、视图、事务、索引)

    MySQL学习思维导图 内容包括:MySQL简介.SQL基础命令.约束.单表查询.多表查询.内置函数.存储过程.视图.事务.索引 文章目录 MySQL学习思维导图 一.MySQL简介 二.SQL基础命 ...

  8. mysql+永久+关闭提交,MySQL学习【第十一篇存储引擎之事务解释】

    一.innodb的核心特点------事务 1.什么是事务 在一组数据操作执行步骤,这些步骤被视为一个单元,主要针对dml语句(update.delete.insert) 2.事务ACID特性 Ato ...

  9. MySQL学习-MySQL数据库事务

    MySQL数据库事务 1.事务概述 1.什么是事务? 2.和事务相关的语句只有:**DML语句.(insert delete update)** 3.假设所有的业务都能使用1条DML语句搞定,还需要事 ...

最新文章

  1. QA发现的令人抓狂的BUG
  2. 如何完整迁移git仓库到另一个远程地址
  3. 2016年全球100G和200G相干WDM光学系统出货量增长75%
  4. [BetterExplained]如何有效地记忆与学习
  5. ORACLE强大的令人发指
  6. 从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
  7. ubuntu server搭建svn server
  8. mac安装hadoop2-client
  9. 从数据库里读值往TEXT文本里写
  10. 架构、框架和设计模式关系
  11. php 取oracle图片,在PHP中将图片存放ORACLE中_php
  12. class根据状态 vue_搞懂并学会运用 Vue 中的无状态组件
  13. win10电脑一开机提示拒绝访问怎么办
  14. 3 矩阵运算_FlyAI小课堂:小白学PyTorch(11) 常见运算详解
  15. Python内置函数(7)——sum
  16. Struts中s:checkboxlist的用法
  17. root + vm vh 实现响应式字体
  18. 戴尔服务器r720u盘装系统,DELL R720服务器U盘安装操作系统指南
  19. Visual Studio 2019 离线注册方法记录
  20. Chrome浏览器如何清除浏览器缓存快捷键

热门文章

  1. ScrollReveal-元素随页面滚动产生动画的js插件
  2. Log4j日志使用记录
  3. 【three.js详解之一】入门篇
  4. 使用Eclipse构建GeoTools项目
  5. 敏捷测试感悟(之一)
  6. 使用ViewSwitcher模拟手机屏幕应用分屏和切换
  7. Oracle_JOB参数详解
  8. 使用javac编译时碰到的问题
  9. android源码解析------Media多媒体framework层分析
  10. 上:Spark VS Flink – 下一代大数据计算引擎之争,谁主沉浮?