← 每日面试题 学习看板

什么是事务的ACID特性

面试题/03数据库中间件/01MySQL/05事务与锁机制/什么是事务的ACID特性.md

面试记录 2026-09-07

题目:什么是事务的ACID特性

难度:difficulty/low

标签:db/mysql/transaction, mysql/transaction, difficulty/low

评分:⭐⭐☆☆☆(2/5)

我的回答

首先事物的 ACID 性特性就是原子性、一致性、可用性,是用来保证,其实核心是用来保证一致性的。

点评

优点:

不足:

完整讲解

第一部分:知识重点剖析

核心考点定位:考察对数据库事务四大特性的定义理解、实现机制认知,以及区分 ACID 与 CAP 中可用性(Availability)的概念边界。

知识点拆解:

  1. ACID 四特性与实现机制:原子性由 undo log 保障(可回滚);一致性是最终目标(数据合法状态转换);隔离性由锁 + MVCC 实现(并发事务互不干扰);持久性由 redo log 保障(宕机可恢复)。一致性是目标,另外三个是手段。
  2. ACID 与 CAP 的区别:ACID 的 I 是 Isolation(隔离性),CAP 的 A 是 Availability(可用性)。两者字母重叠但含义完全不同,面试中混淆即失分。
  3. MySQL InnoDB 的实现路径:undo log(原子性)→ 业务约束 + 其他三特性(一致性)→ 锁 + MVCC + 隔离级别(隔离性)→ redo log 两阶段提交(持久性)。四者协同保证事务正确性。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. undo log 和 redo log 有什么区别?各自解决什么问题?
  1. 两阶段提交(2PC)在 InnoDB 中怎么用的?
  1. 分布式事务如何保证 ACID?

第三部分:面试者参考回答(口语化)

面试官您好,事务的 ACID 特性指的是原子性、一致性、隔离性和持久性,核心目标是保证数据的一致性。

原子性是指事务中的操作要么全部成功,要么全部回滚,MySQL 是通过 undo log 来实现的——每次修改前把旧值记录下来,如果事务失败就沿 undo log 回滚。

一致性是最终目标,事务执行前后数据都要处于合法状态,比如转账场景里 A 账户扣了钱,B 账户必须加到对应的钱。这个一致性其实是由其他三个特性来保障的。

隔离性是指多个并发事务之间互不干扰,MySQL 通过锁机制和 MVCC 来实现,不同的隔离级别对应不同的可见性规则。MySQL 默认使用可重复读级别。

持久性是指事务一旦提交,即使系统崩溃数据也不会丢失,这是通过 redo log 来保证的,崩溃恢复时根据 redo log 重做未完成的操作。

所以总结来说,一致性是目标,原子性、隔离性、持久性是手段。另外需要注意,ACID 的 I 是隔离性,和 CAP 里的可用性(A)不是一个概念,这个很容易混淆。

https://chat.deepseek.com/share/bgzvkk02xzsh7bjd82