ACID,指的是在数据库事务正确执行的四个基本要素的缩写。

具体解释:

原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

任何一个数据库事务必须满足ACID,只有这样才能保证在事务执行过程中的正确性。

事务,指的是作为单个逻辑工作单元执行的一组操作(数据库操作),要么全部成功,要么全部失败。

本地事务,指数据库事务或传统事务。一次事务只连接一个支持事务的数据库;事务的执行结果保证ACID。

分布式事务,指在分布式环境中一次操作由多个系统协调完成,可能涉及到多个数据库的写操作(多数据源),分布式事务就是为了保证不同数据库(多数据源)的数据一致性。

原子性(Atomicity)

原子性其实非常好理解,我认为它指的就是一种完整性,就是说任何一个具备原子性的事务只有两种状态:完成操作 和 未操作。原子性保证事务的一切操作要么一起成功要么一起失败。原子性的事务一旦开始就一直运行到结束,它不会被线程调度机制中断。如果遇到强制中断,就会全部回滚到最初未操作的状态。还有一种说法是:“原子操作(atomic operation)是不需要”。

利用Innodb的undolog(日志回滚),实现原子性。当事务回滚时能够撤销所有已经成功执行的sql语句,它需要记录回滚的相应日志信息(undolog记录的是操作之前的数据)。

一致性(Consistency)

这个是数据库事务的核心,它是数据库最基本的特性。这条特性看起来简单,但是理解起来还是比较复杂的。

它的书面定义是:一致读 和 一致写

一致读:事务读取数据只能从一个状态中读取,不能从2个或者2个以上状态读取

一致写:事务执行的数据变更只能基于一个一致的状态,且只能体现在一个状态中。

事务必须是使数据库从一个一致性状态变到另一个一致性状态,一致性的定义和完整性约束(主键、外键约束、自定义约束等)有关。事务执行的前后都是合法的数据状态,不能违背任何的数据完整性。

隔离性(Isolation)

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰。

数据并发读写中存在三大致命的问题:

(1)脏读:

读到了其他事务未提交的数据(未提交意味着这些数据可能会回滚,可能最终不会存到数据库)。

(2)不可重复读:

同一个事务多次使用相同条件读取到的数据是不一样的(通常针对更新update操作)。

PS:可重复读,是MySQL默认的事务隔离策略(级别)解决了幻读问题,它使用到了“间隙锁”。

(3)幻读:

事务A按照一定条件进行数据读取,期间事务B插入/删除相同搜索条件的新数据,事务A再次按照原先条件进行读取,发现事务B新插入的数据;事务A两次读取相同条件的数据读取到的条数不一样(通常针对插入insert和删除delete操作)。

持久性(Durability)

一个事务一旦提交,它对数据库中数据的改变应该是永久性的,数据不会丢失。

通过Innodb的redolog,实现持久性。如果涉及到多个操作的数据,都会存到redolog中,最终将redolog的数据持久化到磁盘;在事务提交前,将redolog持久化。

标准SQL隔离级别

隔离级别 脏读 不可重复读 幻读
读未提交(read uncommitted) 可能 可能 可能
读已提交(read committed) 不可能 可能 可能
可重复读(repeatable reads) 不可能 不可能 可能(MySQL不可能)
串行读(serializable) 不可能 不可能 不可能

完全串行读,它将事务的执行变为顺序执行,相当于单线程,后一个事务的执行必须等待前一个事务结束,隔离效果最好,但带来性能开销,影响系统性能。

MySQL事务隔离其实是依赖锁来实现的,读未提交隔离级别,不加锁,性能最好,但解决不了问题。

Spring五大事务隔离级别和七大事务传播行为

ACID--事务四大特性相关推荐

  1. 事务四大特性(ACID)

    事务四大特性(ACID) (1)原子性(Atomic) ​ 指事务是一个不可分割的工作单位(像原子一样),事务中的操作要么都发生,要么都不发生.实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚 ...

  2. ACID(事务四大特性)

    事务四大特性(ACID): 原子性(Atomicity):化学中的原子指不可再分的基本微粒,数据库中原子性强调事务是一个不可分割的整体,事务开始后所有操作要么全部成功,要么全部失败,不可能停滞在中间某 ...

  3. 事务四大特性及隔离级别

    事务四大特性及隔离级别 咱们都知道事务有四大特性ACID,也就原子性(atomicity|ætəˈmɪsəti|). 一致性(consistency).隔离性(isolation|aɪsəˈleɪʃn ...

  4. 事务四大特性之——隔离性

    事务四大特性之--隔离性 四大特性 一.4种隔离级别 二.案例 2.1 模拟业务需求 2.2 解决方案 且夫孝始于事亲,中于事君,终于立身. 孝的初始境界是侍奉自己的双亲,中层境界是侍奉自己的国君,最 ...

  5. mysql事务四个特性_关系型数据库mysql事务四大特性

    关系型数据库mysql 事务四大特性 一.首先我们先说一下什么是事务 在mysql中对数据进行增删改查中的任何一次操作的过程都可以被认为是一次事务,事务是一系列严密的操作,事务的结束有两种结果,当事务 ...

  6. 数据库事务 四大特性

    数据库事务四大特性(ACID) 敲黑板,这是重点,记下来!!会考到 转载连接:https://www.cnblogs.com/fjdingsd/p/5273008.html ⑴ 原子性(Atomici ...

  7. 事务概念和事务四大特性和隔离级别

    什么是事务 事务四大特性 原生的JDBC事务处理 事务的隔离级别

  8. ACDI事务四大特性以及事务的隔离级别

    目录: 一:ACDI事务四大特性 二:事务的隔离级别 Read uncommitted(读未提交) Read committed(读并提交) Repeatable read(重复读) Serializ ...

  9. java事务四大特性ACID

    对于要把事务在实际中使用好,需要了解事务的特性. 事务的四大特性主要是:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability). ...

  10. MySQL中事务四大特性的实现详解

    MySQL事务的四大特性的实现 基本概念 原子性实现 隔离性实现 已提交读 可重复读 持久性实现 日志文件刷新策略 基本概念 事务的四大特性ACID : 原子性Atomic : 事务的所有的SQL操作 ...

最新文章

  1. C语言存储类、作用域、声明周期、链接属性
  2. mysql数据库存储引擎选择_MySQL数据库性能优化之存储引擎选择
  3. 【视频】谷歌大佬30分钟让你入门机器学习(2019谷歌I/O资源分享)
  4. 5 压缩上传图片_推荐一个干净纯粹的网站,专注图片压缩、pdf相关操作
  5. 中国刹车片自动检测系统行业市场供需与战略研究报告
  6. 「leetcode」701. 二叉搜索树中的插入操作:【递归法】【迭代法】详解
  7. idea生成get/set方法
  8. 百度迁徙 迁入人口和迁徙规模爬虫
  9. python程序设计与算法基础教程微课版课后答案_Python程序设计与算法基础教程
  10. IDEA插件开发之基础篇
  11. UE4文件读写(.txt文本文档)
  12. 区分苹果开发者的网址(开发者网址和管理您的appid网址)及证书信息
  13. DIY手机万能红外遥控器
  14. 医疗项目业务以及表设计介绍
  15. 2017风口之变:创业者的焦虑与希望
  16. 门禁锁加装指纹及联网控制功能
  17. git 在往云端push代码时候报错detached head
  18. 食品安全溯源区块链解决方案探索
  19. 【python】BaiDuAI-人脸检测、人脸搜索、人脸注册
  20. 零编程制作疫情全国行政区地图,理性看待各地疫情防控减码

热门文章

  1. 网络营销:信任是流量时代的蓝海
  2. 计算机标准红色,标准红色cmyk值
  3. windows 10 账号密码策略及规则
  4. ecshop多国货币汇率换算,多国货币切换,多国货币价格转换
  5. php生成五星红旗,php基于GD库画五星红旗的方法_PHP
  6. Mybatis 传入多个参数查询数据 (3种方法)
  7. mysql计算同比和环比的区别_Mysql同比环比统计
  8. 信息学奥赛一本通(1097:画矩形)
  9. Win10 System进程占用硬盘100%,Microsoft IME 占用CPU高
  10. 深入剖析MSAA多重采样抗锯齿(multisample anti-aliasing)