ACID 是 Atomicity、Consistency、Isolation、Durability 的缩写,用来保证数据库事务可靠执行,一个事务必须同时满足这四点。
1. A = Atomicity 原子性
事务是不可分割的最小单元,要么全部执行成功,要么全部失败回滚,不能半截执行。 例子:转账 A→B 100 元
- A 扣 100、B 加 100 必须一起成功
- 如果 A 扣钱后系统崩溃,必须撤销扣钱操作,两边金额恢复原样
2. C = Consistency 一致性
事务执行前后,数据整体约束、业务规则始终合法,数据不会出现非法中间状态。 承接转账例子:
- 转账前后两人总金额不变
- 不能出现钱凭空多 / 凭空消失、余额负数等不合规数据 原子性、隔离性、持久性最终都是为了保证一致性。
3. I = Isolation 隔离性
多个事务并发执行时,彼此之间互不干扰,一个事务看不到另一个事务未提交的脏数据。 并发会带来三类问题:脏读、不可重复读、幻读;数据库通过事务隔离级别控制隔离强度(读未提交、读已提交、可重复读、串行化)。
4. D = Durability 持久性
事务一旦提交成功,修改就永久写入磁盘,即使数据库宕机、断电、重启,修改的数据也不会丢失。 原理:提交时先写 redo 日志落盘,再刷数据页,崩溃后可通过日志恢复。
一句话总结
原子性保证要么全成要么全败;一致性保证数据永远合理;隔离性保证并发互不乱套;持久性保证提交永不丢失。
