事务的性质
事务(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 保证提交后的结果永久保存
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!