ACID特性

数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。(执行单个逻辑功能的一组指令或操作称为事务)

详解

1. 原子性

原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。

可采用“A向B转账”这个例子来说明解释

在DBMS中,默认情况下一条SQL就是一个单独事务,事务是自动提交的。只有显式的使用start transaction开启一个事务,才能将一个代码块放在事务中执行。

2. 一致性

一致性是指在事务开始之前和事务结束以后数据库的完整性约束没有被破坏。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性

如A给B转账,不论转账的事务操作是否成功,其两者的存款总额不变(这是业务逻辑的一致性,至于数据库关系约束的完整性就更好理解了)。

保障机制(也从两方面着手):数据库层面会在一个事务执行之前和之后,数据会符合你设置的约束唯一约束,外键约束,check约束等)和触发器设置;此外,数据库的内部数据结构(如 B 树索引或双向链表)都必须是正确的。业务的一致性一般由开发人员进行保证,亦可转移至数据库层面。

3. 隔离性

多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。

在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据

事务最复杂问题都是由事务隔离性引起的。完全的隔离性是不现实的,完全的隔离性要求数据库同一时间只执行一条事务,这样会严重影响性能。

关于隔离性中的事务隔离等级(事务之间影响),参见相应博文

4. 持久性

这是最好理解的一个特性:持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。(完成的事务是系统永久的部分,对系统的影响是永久性的,该修改即使出现致命的系统故障也将一直保持)

write ahead logging:SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性,在数据写入到数据库之前,先写入到日志,再将日志记录变更到存储器中。

数据库事务ACID特性相关推荐

  1. [转]数据库事务ACID特性

    ACID特性 数据库管理系统中事务(transaction)的四个特性(分析时根据首字母缩写依次解释):原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持 ...

  2. 数据库事务ACID特性分析

    在日常生活中,事务是无时无刻不存在的,什么是事务,按我的理解事务便是执行一段连续的不可分离的操作,这段操作是为了实现某一个目的而执行的,它不存在中间状态,要么执行成功,则该操作所带来的影响永久存在,要 ...

  3. 数据库的事务ACID特性以及MySQL如何保持事物特性

    数据库的ACID特性 1.原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响 ...

  4. 数据库事务 四大特性

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

  5. 【概念原理】四种SQL事务隔离级别和事务ACID特性

    2019独角兽企业重金招聘Python工程师标准>>> 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性. 事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UN ...

  6. 数据库事务ACID原则学习分享

    本人结合自己对技术的理解,努力以通俗易懂的内容帮助大家了解技术的基本原理,内容仅供参考,不对或不完善的地方请大家指教,感谢关注! 一.事务概念的引入 当今,信息化技术非常发达的时代,我们通过手机上的银 ...

  7. 数据库 事务的特性ACID

    事务(Transaction)是并发控制的基本单位. 所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位.例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这 ...

  8. 数据库事务ACID详解(转载)

    转载自:http://blog.csdn.net/shuaihj/article/details/14163713 谈谈数据库的ACID 一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行 ...

  9. 深入理解Mysql事务ACID特性以及事务隔离级别

    事务的概念: 1.事务是一组sql语句的执行,要么全部成功,要么全部失败.保证事务执行的原子性. 2.事务的全部sql语句执行成功,才能提交,将结果写回到磁盘上. 3.事务执行过程中,有的SQL执行失 ...

最新文章

  1. centos6一键安装vsftpd脚本
  2. 高版本linux安装gamit,求助(Ubuntu14.1上安装GAMIT10.5过程中错误提示如下)
  3. Centos 7.5安装配置MongoDB 4.0.5
  4. python 2021/12/31
  5. 组件的生命周期钩子函数
  6. Windows下用C语言连接Mysql注意问题
  7. 拓端tecdat|R语言ggsurvplot绘制生存曲线报错 : object of type ‘symbol‘ is not subsettable
  8. 08.electron-(渲染进程间的通信)
  9. 搜狗拼音输入法4.2_巧用搜狗快速输入特殊字符与表情字符画
  10. linux bridge 添加fdb,Linux协议栈--网桥设备的实现
  11. 中小企业OA系统如何选型?OA软件选型必看技巧
  12. 人工智能和自动化之间,主要有区别吗?
  13. java locale zh_国际化:Java平台下的Locale类
  14. Unity小地图的实现
  15. 烧钱数亿后,趣店罗敏的预制菜业务从兴到衰
  16. TCR-seq(T细胞受体测序)
  17. 如何理解共价键的方向性和饱和性
  18. SAP外围系统配置问题之创建和导入bussiness system-找不到应有的bussiness system
  19. 【时间复杂度】时间复杂度
  20. WordCloud词云图去除停用词的正确方法

热门文章

  1. 04_动画 animation
  2. 工作8年,跳槽字节跳动,月薪从1w涨到7w,网友:本科的话有点牛逼了
  3. Windows Server 2003 禁止关机事件跟踪
  4. JavaScript实现获取当前系统时间
  5. 权限系统--组织机构管理
  6. docker如何进入容器内部
  7. Linux安装配置ELK日志及与SpringBoot的整合使用
  8. 转播到微博显示隐藏Share to view all插件(如何申请新浪,腾讯微博appkey信...
  9. 一个类似抖音 APP 拍摄按钮效果的控件
  10. mysql字符集编码和排序规则