479 字
2 分钟
MySQL 事务的 ACID 特性分别是什么
  1. 1MySQL 面试复习导读:知识地图与阅读路线
  2. 2MySQL 存储引擎怎么选:InnoDB、MyISAM 与 MEMORY
  3. 3MySQL 索引类型与 B+ 树:结构、分类和失效场景
  4. 4MySQL B+ 树查询全过程:从根节点到页目录
  5. 5InnoDB 聚簇索引与二级索引:什么是回表
  6. 6MySQL 覆盖索引:如何避免回表
  7. 7MySQL 联合索引的最左前缀匹配原则
  8. 8MySQL 索引下推:把过滤提前到存储引擎
  9. 9MySQL 事务异常读:脏读、不可重复读与幻读
  10. 10MySQL 四种事务隔离级别与选型取舍
  11. 11MySQL MVCC:Undo Log、版本链与 ReadView
  12. 12MySQL InnoDB 锁的分类:行锁、表锁与意向锁
  13. 13MySQL 乐观锁与悲观锁:冲突少时重试,冲突多时排队
  14. 14MySQL 发生死锁怎么办:检测、定位与处理
  15. 15MySQL 事务的 ACID 特性分别是什么本文
  16. 16InnoDB Redo Log 如何保证崩溃恢复
  17. 17InnoDB Undo Log 的回滚与 MVCC 作用
  18. 18MySQL Binlog 是什么,和 Redo Log 有什么区别
  19. 19一条 MySQL 查询从连接到返回结果经历什么
  20. 20如何用 EXPLAIN 读懂 MySQL 执行计划
  21. 21MySQL 为什么需要 Redo Log 与 Binlog 两阶段提交
  22. 22MySQL 崩溃后如何恢复已提交事务
  23. 23InnoDB Buffer Pool 如何提升查询与写入性能
  24. 24联合索引应该如何设计
  25. 25InnoDB 快照读与当前读如何处理幻读
  26. 26联合索引范围条件之后的列还能使用吗
  27. 27MySQL 索引看起来失效了,如何判断优化器的选择
  28. 28MySQL 8.0 如何定位并处理 InnoDB 死锁
  29. 29MySQL 慢查询如何定位和优化
  30. 30MySQL 的 ORDER BY、GROUP BY 与 filesort
  31. 31MySQL 普通索引和唯一索引如何选择
  32. 32MySQL 主从复制的基本流程是什么
  33. 33MySQL 主从延迟和读写分离如何处理
  34. 34MySQL 深分页为什么慢,如何改写
  35. 35InnoDB 主键应该如何设计
  36. 36MySQL 字符集与排序规则有什么区别
  37. 37数据库范式与反范式如何取舍

ACID 是事务的四个目标:原子性(Atomicity)保证事务中的操作全做或全不做;一致性(Consistency)要求事务前后满足业务约束;隔离性(Isolation)控制并发事务彼此可见的程度;持久性(Durability)保证已提交结果在故障后仍可恢复。ACID 不是四个互不相关的开关,也不代表数据库能自动理解所有业务规则。

InnoDB 通过 Undo Log 支持回滚和旧版本读取,以实现原子性相关能力;锁与 MVCC 实现不同隔离级别;Redo Log 支持崩溃后的已提交修改恢复。约束、事务边界和应用校验共同维护一致性,例如唯一约束可以防止重复邮箱,但“账户余额不得低于信用额度”仍需由正确的事务逻辑和约束保证。持久性还受 innodb_flush_log_at_trx_commit、存储设备和复制配置影响,不能只凭“用了事务”推断机器断电后绝对不丢数据。

START TRANSACTION;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT;

转账两步必须在同一事务中;若第二步失败,应回滚第一步。事务还应检查影响行数、金额精度和余额约束,避免把数据库原子性误当作业务正确性。

追问#

  1. ACID 中一致性由数据库单独保证吗? 不完全。数据库约束和事务提供机制,应用仍需设计正确的业务规则和事务操作。
  2. 隔离性越高越好吗? 不一定。更强隔离通常降低并发或增加冲突,需要按异常读风险与吞吐量选择。
  3. 提交返回成功就一定不会丢吗? 需要结合 InnoDB 刷盘配置、硬件是否正确执行 flush,以及复制确认策略判断。
MySQL 事务的 ACID 特性分别是什么
https://blog.xqcherry.top/posts/interview/mysql/acid-transactions/
作者
xqcherry
发布于
2026-10-12
许可协议
CC BY-NC-SA 4.0