事务(Transaction)是数据库管理系统(DBMS)中一个非常重要的概念,用来保证数据操作的可靠性和一致性。事务具有以下四个基本性质,简称为 ACID:

🧩 1. 原子性(Atomicity)

含义:
事务是一个不可分割的最小执行单位,要么全部执行成功,要么全部失败回滚。

举例:
在银行转账中,A 向 B 转账 100 元:

A 账户扣 100 元

B 账户加 100 元

这两个操作必须作为一个整体执行。如果在执行过程中出错(例如系统宕机),事务会回滚到最初状态,保证不会出现“钱从 A 扣了但没到 B”的情况。

🧮 2. 一致性(Consistency)

含义:
事务执行前后,数据库都必须保持一致状态。也就是说,事务不能破坏数据的完整性约束。

举例:
转账前后,A 和 B 的账户总额应该相同(假设没有别的操作),即:

转账前:A + B = 2000
转账后:A + B = 2000

无论事务成功或失败,数据的完整性规则都不能被破坏。

🔒 3. 隔离性(Isolation)

含义:
多个事务同时执行时,它们之间互不干扰,一个事务的中间状态对其他事务不可见。

举例:
如果一个事务正在修改某条数据,另一个事务不能同时读取或修改这条数据,直到第一个事务提交为止。

常见隔离级别(从低到高):

读未提交(Read Uncommitted):可能读到未提交数据(脏读)

读已提交(Read Committed):避免脏读,但可能出现不可重复读

可重复读(Repeatable Read):避免不可重复读(MySQL 默认)

串行化(Serializable):最高级别,完全隔离,性能最低

🧱 4. 持久性(Durability)

含义:
一旦事务提交,其结果就会永久保存到数据库中,即使系统崩溃也不会丢失。

实现方式:
数据库通常通过 日志(如 redo log) 来保证持久性。当系统恢复时,可以根据日志重新应用已提交事务的修改。

🔁 总结(ACID)
性质	英文全称	作用
原子性	Atomicity	保证事务要么全做要么全不做
一致性	Consistency	保证数据状态前后一致
隔离性	Isolation	保证并发事务互不干扰
持久性	Durability	保证提交后的结果永久保存