直接回答:ACID 是事务的四个特性:原子性(Atomicity)——事务内操作要么全部成功要么全部回滚;一致性(Consistency)——事务把数据库从一个合法状态带到另一个合法状态,不破坏约束;隔离性(Isolation)——并发事务互不干扰,中间状态对外不可见;持久性(Durability)——提交后的修改即使宕机也不丢失。

展开解析:各特性的实现机制不同:

  • 原子性靠 undo log 回滚未提交的修改。
  • 持久性靠 redo log(WAL),先写日志再落盘,崩溃后重放恢复。
  • 隔离性靠锁与 MVCC,SQL 标准定义了读未提交、读已提交、可重复读、串行化四个级别,级别越低并发越高但异常越多(脏读、不可重复读、幻读)。
  • 一致性是最终目标,由前三者加应用约束共同保证。

易错点:一致性与 CAP 里的 C 不是一回事;隔离性不是越强越好,强隔离牺牲并发。

追问方向:隔离级别与对应并发异常、MVCC 如何在不加读锁下实现隔离。