MySQL事务ACID特性与实现原理
请详细解释MySQL事务的ACID四大特性(原子性、一致性、隔离性、持久性)分别是什么意思?InnoDB是如何实现这些特性的?
回答
小字辈
ACID四大特性:
-
原子性(Atomicity):事务是不可分割的最小单元,要么全部成功,要么全部失败回滚
- 实现:Undo Log记录回滚所需的信息,当事务回滚时,通过Undo Log恢复到事务开始前的状态
-
一致性(Consistency):事务执行前后,数据保持完整性和一致性约束
- 实现:由原子性、隔离性、持久性共同保证,数据库约束(外键、唯一性)、触发器也参与保证
-
隔离性(Isolation):多个事务并发执行时互不干扰
- 实现:锁机制(行锁、间隙锁) + MVCC(多版本并发控制)
-
持久性(Durability):事务一旦提交,修改永久保存
- 实现:Redo Log(WAL技术——Write-Ahead Logging),先写日志再写磁盘,即使崩溃也能通过Redo Log恢复
WAL核心:事务提交时先刷Redo Log(顺序IO,性能高),数据页的刷新延迟进行(随机IO合并),崩溃恢复时重放Redo Log即可。