请问人们常说的数据库的 ACID 究竟是什么意思?

查看 110|回复 7
作者:xieyuheng   
课本上经常提到 ACID 的概念,人们也经常把 ACID 挂在嘴边。
但是课本上的介绍通常很抽象。ACID 具体是什么意思?
对于 A 、C 、I 、D 这四个属性中的每一个,具体的正面例子和反面离子分别是什么?

acid, 课本, 意思, 嘴边

Salomea   
或许百度一下比在这里更明了🐶
SadBox   
原子性 持久性 隔离性 还有个啥来着的,记不太清了
logAn7   
原子性( Atomicity ):事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性( Consistency ):执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的;隔离性( Isolation ):并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性( Durability ):一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。🌈 这里要额外补充一点:只有保证了事务的持久性、原子性、隔离性之后,一致性才能得到保障。也就是说 A 、I 、D 是手段,C 是目的!
------
著作权归 JavaGuide(javaguide.cn)所有
基于 MIT 协议
原文链接: https://javaguide.cn/database/mysql/mysql-questions-01.html
xieyuheng
OP
  
可悲就可悲在广告语写进了教科书,并且人民不觉得那是 markting 了,而是觉得那是 “知识”。
xieyuheng
OP
  
@logAn7 还是抽象的描述。如果有例子就只有一个银行的例子。
可知道银行用的是 appending only 账本?
跟“两次修改要在同一个事务中”没有任何关系。
xieyuheng
OP
  
所谓持久性,就是数据库的定义本身吧,我写 App 的时候要用一个数据库,就是为了把数据持久化。
A 、C 、I 既然都和事务有关,可不可以说 ACID 就是,这个数据库要支持事务这个功能?
那么 couchDB 之类的,是不是就不算 ACID 的数据库?
PTLin   
个人认为 MySQL 里,Atomicity 是由 redo log 以及 undo log 实现的:redo log 和 Mini Transaction 可以保证执行一条语句再恢复后数据库整体的状态不会是不一致的,undo log 可以保证 redo log 恢复后把未提交的事务重新回滚。
Consistency 是数据库对显示世界建模的正确性的概念,很多时候需要再代码段实现一致性。
Isolation 是由 undo log 以及锁,间隔锁,MVCC 实现的,锁做到了基础的隔离实现。undo log 为基础的 MVCC 的 readview 保证了实现隔离性下的并发性。
Durability 是由 redo log 以及 undo log 实现的,发生故障后可以进行恢复。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部