MySQL 事务的四大特性(ACID)

发布于:2025-04-19 ⋅ 阅读:(21) ⋅ 点赞:(0)

🌟 MySQL 事务的四大特性(ACID)

事务是一条或多条 SQL 语句组成的执行单元,要么全部执行成功,要么全部失败,不会出现部分执行的情况。

事务具有四个基本特性,也就是通常所说的 ACID 特性,即原子性、一致性、隔离性和持久性。主要作用是保证数据库操作的一致性。
在这里插入图片描述

什么是原子性?

原子性子性意味着事务中的所有操作要么全部完成,要么全部不完成,它是不可分割的单位。如果事务中的任何一个操作失败了,整个事务都会回滚到事务开始之前的状态,如同这些操作从未被执行过一样。

什么是一致性?

一致性确保事务从一个一致的状态转换到另一个一致的状态。

什么是隔离性?

隔离性意味着并发执行的事务是彼此隔离的,一个事务的执行不会被其他事务干扰。就是事务之间是井水不犯河水的。
隔离性主要是为了解决事务并发执行时可能出现的问题,如脏读、不可重复读、幻读等。
数据库系统通过事务隔离级别(如读未提交、读已提交、可重复读、串行化)来实现事务的隔离性。

什么是持久性?

持久性确保事务一旦提交,它对数据库所做的更改就是永久性的,即使发生系统崩溃,数据库也能恢复到最近一次提交的状态。通常,持久性是通过数据库的恢复和日志机制来实现的,确保提交的事务更改不会丢失。

四大特性(ACID)总结
特性 名称 英文缩写 作用解释
A 原子性 Atomicity 事务中的所有操作,要么全部完成,要么全部不做,不可分割
C 一致性 Consistency 事务执行前后,数据库要处于一致状态(满足所有约束)
I 隔离性 Isolation 多个事务并发执行时,互不干扰,仿佛每个事务都独立进行
D 持久性 Durability 一旦事务提交,修改会永久保存到数据库,即使系统宕机也不会丢失

通过现实中的一个例子帮助你更好理解👇

🎯 生活类比场景(ATM 转账)

假设你使用 ATM 向朋友转账 100 元:

  1. 原子性:系统会先从你账户扣除 100 元,再给你朋友加 100 元。这两个操作必须一起成功或一起失败。不能出现你扣了钱但对方没收到。
  2. 一致性:无论系统发生什么变动,总金额不变(你-100,他+100,总额没变)。
  3. 隔离性:在你转账过程中,另一个人不能读到转账“中间状态”,例如你已经扣了钱但对方还没收到。
  4. 持久性:转账成功后,即使系统崩了、掉电了,数据库也要能“恢复”这个交易结果。

🔐 ACID 的技术实现

特性 实现机制 技术细节
原子性 回滚日志(Undo Log) 使用 Undo 日志回滚失败的操作
一致性 ACID 整体保障 依赖事务机制和应用逻辑(如外键、约束等)
隔离性 隔离级别(4种) 通过 MVCC、锁机制(行锁、间隙锁等)来实现
持久性 重做日志(Redo Log) 提交事务时先写入 Redo 日志,宕机可恢复

🧠 Mermaid 图表助记(事务四大特性)


🔎 面试常问陷阱:

问题 解答思路
ACID 中哪个特性最容易被破坏? 隔离性(尤其是高并发时)
如何保证原子性? 使用 Undo Log 实现回滚机制
InnoDB 是如何实现持久性的? 提交前写入 Redo Log,崩溃后可重放恢复
ACID 和 CAP 有什么不同? ACID 是数据库事务的标准,CAP 是分布式系统理论

网站公告

今日签到

点亮在社区的每一天
去签到