温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

为何数据库要遵循ACID

发布时间:2026-09-16 02:24:00 来源:亿速云 阅读:100 作者:小樊 栏目:数据库

数据库之所以要遵循 ACID(原子性、一致性、隔离性、持久性),是因为在真实业务场景中,数据往往关系到资金、订单、用户信息等关键资产。如果数据库不能保证这些特性,就容易出现数据错误、丢失或混乱,进而造成严重的业务后果。

下面从“如果不遵循会怎样”以及“ACID 各自解决什么问题”两个角度来说明。


一、如果不遵循 ACID,会发生什么?

1. 没有原子性(Atomicity)

一个操作由多个步骤组成,例如:

  • 从 A 账户扣 100 元
  • 向 B 账户加 100 元

如果只执行了第一步,系统崩溃,就会出现:

A 钱少了,B 没收到钱 → 钱“凭空消失”

2. 没有一致性(Consistency)

数据库可能进入非法状态,例如:

  • 账户余额变成负数(业务不允许)
  • 订单状态和库存数量对不上

3. 没有隔离性(Isolation)

多个事务并发执行时可能互相干扰:

  • 脏读:读到了别人还没提交的数据
  • 丢失更新:两个人同时改同一行,结果覆盖了

4. 没有持久性(Durability)

系统刚写完数据就断电,重启后数据没了:

用户以为支付成功,其实数据库里没记录


二、ACID 各自解决什么问题?

A:Atomicity(原子性)

“要么全做,要么全不做”

  • 保证事务是一个不可分割的整体
  • 出错时通过回滚(rollback)恢复

✅ 防止:半途而废导致的数据不一致


C:Consistency(一致性)

“数据始终满足业务规则”

  • 事务前后,数据库都处在合法状态
  • 由应用规则 + 数据库约束共同保证

✅ 防止:违反业务约束的非法数据


I:Isolation(隔离性)

“并发事务互不影响”

  • 多个事务同时执行,看起来像串行执行
  • 通过锁、MVCC 等机制实现

✅ 防止:并发导致的数据错乱


D:Durability(持久性)

“一旦提交,永久生效”

  • 提交后的数据不会因为故障丢失
  • 通常依赖日志(WAL)、磁盘存储

✅ 防止:系统崩溃导致的数据丢失


三、总结一句话

数据库遵循 ACID,是为了在复杂、并发、易出错的环境中,依然保证数据是正确、可靠、可信的。

这也是为什么银行、电商、医疗、政务等系统,几乎都建立在支持 ACID 的数据库之上。

如果你愿意,我也可以从:

  • ACID 与 BASE 的区别
  • 为什么 NoSQL 不都遵循 ACID
  • 实际例子中看 ACID 如何起作用

来进一步解释。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手