1. ACID(原子性、一致性、隔离性、持久性)的精确语义与实现机制?
请说明 ACID(原子性、一致性、隔离性、持久性)的精确语义,以及数据库如何实现它们?
- 原子性:事务要么全部成功要么全部回滚。
- 一致性:事务前后数据满足约束。
- 隔离性:并发事务互不干扰。
ACID 是事务的四大特性。原子性(Atomicity):事务中的所有操作要么全部提交要么全部回滚,不能部分成功,通过 undo log(回滚日志)或 WAL 中的回滚机制实现。一致性(Consistency):事务执行前后数据库都满足约束(主键、外键、唯一、CHECK 等),由应用层与数据库约束共同保证,原子性、隔离性、持久性合力维护一致性。隔离性(Isolation):并发事务之间相互隔离,通过锁、MVCC 等实现。持久性(Durability):事务提交后其修改永久保存,即使崩溃也不丢失,通过 WAL 与 fsync 落盘实现。四个特性相互依赖:原子性靠 undo、持久性靠 redo、隔离性靠锁/MVCC,一致性由约束与前三者共同保证。
理解 ACID 需要对应到具体机制:原子性-undo、持久性-redo/WAL、隔离性-锁/MVCC、一致性-约束。这是事务理论的核心。