前言:ACID的认识从我接触mysql数据的时候就开始了,从最开始的死记硬背,到后来理解每个特性的意思,再到如何实现每一个特性,我发现随着对ACID的逐步深入,我更深人的了解了MYsql,对mysql事务而言ACID是核心。

介绍ACID

A:atomicity 原子性,又叫不可分割性,要么都执行,要不都不执行,undo log(MVCC)

C:consistency 一致性 最核心和最本质的要求

I:isolation 隔离性 ​ 数据库的事务隔离级别有四种,分别是读未提交、读已提交、可重复读、序列化,不同的隔离级别下会产生脏读、幻读、不可重复读等相关问题,因此在选择隔离级别的时候要根据应用场景来决定,使用合适的隔离级别。

D:持久性  数据断电不丢失 redo log

隔离级别

- READ-UNCOMMITTED(读取未提交): 事务的修改,即使没有提交,对其他事务也都是可见的。事务能够读取未提交的数据,这种情况称为脏读。
- READ-COMMITTED(读取已提交): 事务读取已提交的数据,大多数数据库的默认隔离级别。当一个事务在执行过程中,数据被另外一个事务修改,造成本次事务前后读取的信息不一样,这种情况称为不可重复读。
- REPEATABLE-READ(可重复读): 这个级别是MySQL的默认隔离级别,它解决了脏读的问题,同时也保证了同一个事务多次读取同样的记录是一致的,但这个级别还是会出现幻读的情况。幻读是指当一个事务A读取某一个范围的数据时,另一个事务B在这个范围插入行,A事务再次读取这个范围的数据时,会产生幻读
- SERIALIZABLE(可串行化): 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。

事务隔离机制的实现基于锁机制和并发调度。其中并发调度使用的是MVVC(多版本并发控制),通过保存修改的旧版本信息来支持并发一致性读和回滚等特性。

因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是READ-COMMITTED(读取提交内容):,但是你要知道的是InnoDB 存储引擎默认使用 **REPEATABLE-READ(可重读)**并不会有任何性能损失。

隔离级别以及会出现的问题

| 隔离级别                                | 脏读 | 不可重复  读 | 幻读 |
| -----------------                          | ----    |  ------------     | ----    |
| READ- UNCOMMITTED       | √       | √                  | √    |
| READ-COMMITTED             | ×       | √                  | √    |
| REPEATABLE- READ           | ×      | ×                   | √    |
| SERIALIZABLE                     | ×      | ×                    | ×    |

mysql-ACID相关推荐

  1. MySQL ACID与MVCC浅谈

    MySQL ACID与MVCC浅谈 前言 我们都知道在做事务的概念,就是一个完整的操作动作要么都执行,要么都不执行,这是一个不可分割的工作单位,ACID又是事务的四大特征.那么ACID具体是什么呢? ...

  2. MySQL ACID及四种隔离级别的解释

    以下内容出自<高性能MySQL>第三版,了解事务的ACID及四种隔离级有助于我们更好的理解事务运作. 下面举一个银行应用是解释事务必要性的一个经典例子.假如一个银行的数据库有两张表:支票表 ...

  3. mysql acid介绍_InnoDB ACID模型介绍

    ACID模型是一组数据库设计原则,它们强调对于业务数据和任务关键型应用程序非常重要的可靠性概念.MySQL有诸如InnoDB存储引擎的组件与ACID模型紧密相连,这样数据就不会被损坏,也不会因为软硬件 ...

  4. mysql acid

    本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...

  5. Mysql.ACID

    前言 Mysql关系型数据库的ACID规则: A (Atomicity) 原子性: 事务(transaction)里的所有操作要么全部做完 C (Consistency) 一致性: 数据库要一直处于一 ...

  6. Mysql ACID详解

    ACID简述 Atomicity.Durability实现之 (WAL+redo log) Atomicity .Isolation实现之 (锁 OR undo log+MVCC) 一.前言 主要是后 ...

  7. 同一个事务里面对同一条数据做2次修改_[玩转MySQL之九]MySQL事务ACID[2-1]ACID详解...

    一. 引言 做数据库相关工作的同学都知道事务,就是一个操作序列 ,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位, ACID又是事务的四大特性. 那么就会有如下疑问: ACID具体代表什 ...

  8. 贪心算法——埃及分数问题

    贪心算法之埃及分数问题 查看全文 http://www.taodudu.cc/news/show-6309464.html 相关文章: 2017清华大学计算机考研机试答案(含代码) mysql与mys ...

  9. 想染指系统架构?看这篇就够了

    https://juejin.im/post/58f45b058d6d8100648a69f0 原文地址:github.com/donnemartin/system-design-primer 译文出 ...

  10. [译] 系统设计入门 | 掘金翻译计划

    原文地址:github.com/donnemartin- 译文出自:掘金翻译计划 译者:XatMassacrE.L9m.Airmacho.xiaoyusilen.jifaxu 这个 链接 用来查看本翻 ...

最新文章

  1. 微服务拆的太细了会有什么问题
  2. 时间序列:等分布序列(Equidistributed sequence)
  3. CSDN博客代码块代码没有高亮颜色解决办法
  4. java基础--集合案例斗地主发牌排序
  5. C++工作笔记-模版类要注意的地方(对比模版函数)
  6. onClientClick 和 onClient 区别
  7. 艾默生网络能源的数据中心生意经
  8. GIT常用快捷键配置
  9. 监控mysql主从同步状态是否异常
  10. 【复试笔记】市政工程-给水排水管网系统
  11. RTDS 推出 NovaCor
  12. 爬虫——xpath爬取图片
  13. 程序员能力的四个境界
  14. 关于对接企业微信第三方服务商所踩的坑
  15. 实习僧[shixiseng.com]爬虫实战笔记
  16. bootstrap4笔记
  17. 微信小程序校园活动管理系统+后台管理系统
  18. 华为交换机、路由器设备怎样配置console登录密码
  19. ubuntu20.04下好用的截图软件
  20. 北京市经济适用住房管理办法(试行)(征求意见稿)

热门文章

  1. 写出转heif的代码
  2. Git连接远程仓库(私有/公开仓库),克隆代码
  3. socket 通信 error:88
  4. java项目中表格导入找到最近父类生成树形结构
  5. PHP不包括字母,数字和下划线的webshell
  6. 安防监控系统流媒体服务器,搭建一套安防监控系统RTSP/Onvif网络摄像头视频流媒体服务有哪些核心要素?...
  7. C++.继承——虚继承
  8. telnet远程登录aaa模式详解【华为eNSP】
  9. 8-1 用QPainter绘图(Painting with QPainter)
  10. NB-IoT通信模组/模块