CodeWalk

MySQL事务ACID特性与实现原理

作者:小字辈 · 2026-05-30 12:55

请详细解释MySQL事务的ACID四大特性(原子性、一致性、隔离性、持久性)分别是什么意思?InnoDB是如何实现这些特性的?

回答

小字辈

ACID四大特性

  1. 原子性(Atomicity):事务是不可分割的最小单元,要么全部成功,要么全部失败回滚

    • 实现:Undo Log记录回滚所需的信息,当事务回滚时,通过Undo Log恢复到事务开始前的状态
  2. 一致性(Consistency):事务执行前后,数据保持完整性和一致性约束

    • 实现:由原子性、隔离性、持久性共同保证,数据库约束(外键、唯一性)、触发器也参与保证
  3. 隔离性(Isolation):多个事务并发执行时互不干扰

    • 实现:锁机制(行锁、间隙锁) + MVCC(多版本并发控制)
  4. 持久性(Durability):事务一旦提交,修改永久保存

    • 实现:Redo Log(WAL技术——Write-Ahead Logging),先写日志再写磁盘,即使崩溃也能通过Redo Log恢复

WAL核心:事务提交时先刷Redo Log(顺序IO,性能高),数据页的刷新延迟进行(随机IO合并),崩溃恢复时重放Redo Log即可。