数据库事务的 ACID 四大性质

事务的 ACID 四大性质

1. 原子性 (Atomicity)
  • 核心思想 ​: ​​"要么全部完成,要么全部不做"​。一个事务中的所有操作是一个不可分割的整体。

  • 比喻​: 就像银行转账,包含从A账户扣款和向B账户加款两个操作。原子性保证了这两个操作要么都成功执行(转账成功),要么都不执行(如果中途系统故障,不会出现A的钱扣了但B没收到的情况)。

  • 实现机制 ​: 通常由数据库的事务管理子系统日志恢复机制 共同保证。如果事务失败,系统会利用回滚日志(UNDO Log)​​ 来撤销该事务中所有已经执行的操作。

2. 一致性 (Consistency)
  • 核心思想 ​: ​事务的执行必须使数据库从一个一致的状态转换到另一个一致的状态。事务不能破坏数据库定义的任何业务规则或完整性约束(如主键唯一、外键关联、余额不能为负数等)。

  • 比喻​: 继续用转账的例子,转账前后,两个账户的总金额应该保持不变。一致性确保了不会因为转账操作而产生或消失钱。

  • 实现机制 ​: 一致性是由应用程序和数据库共同保证的。应用程序需要正确地编写事务逻辑(例如,检查余额是否足够),而数据库则通过原子性、隔离性和持久性来为一致性提供保障,并强制执行固有的完整性约束(如设置外键、非空等)。

3. 隔离性 (Isolation)
  • 核心思想 ​: ​并发执行的多个事务之间互不干扰。即使多个事务同时运行,每个事务的感觉都像是系统在单独为自己服务。

  • 比喻​: 多个用户同时操作数据库,就像每个用户都在独立的办公室裡工作,彼此看不到对方未提交的修改,从而避免了混乱。

  • 常见问题(如果没有隔离性)​​: 会产生脏读、不可重复读、幻读等问题。

  • 实现机制 ​: 数据库通过锁机制多版本并发控制(MVCC)​​ 等技术来实现不同级别的隔离性。

4. 持久性 (Durability)
  • 核心思想 ​: ​一旦事务提交,其修改就会永久保存到数据库中,即使随后系统发生任何故障(如断电、崩溃)也不会丢失。

  • 比喻​: 就像你用钢笔在纸上写字,字迹已经渗透到纸纤维里,即使用橡皮擦掉表面的墨迹,字迹依然可见(持久化在了磁盘上,而非易失的内存中)。

  • 实现机制 ​: 通常通过预写式日志(Write-Ahead Logging, WAL)​ ​ 和重做日志(REDO Log)​​ 来实现。在数据页被修改之前,先将修改操作记录到日志文件中。事务提交时,只需保证日志记录已写入持久化存储即可。即使之后数据页本身没有写回磁盘,系统重启后也能根据日志重新执行(REDO)已提交的事务,从而保证持久性。


总结与记忆技巧

性质 英文 核心保证 实现技术
原子性 Atomicity 全做或全不做 UNDO Log​(回滚日志)
一致性 Consistency 状态转换符合规则 需要应用和DB共同维护
隔离性 Isolation 并发事务互不干扰 MVCC
持久性 Durability 提交后永不丢失 REDO Log​(重做日志)
相关推荐
TDengine (老段)3 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)3 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
安当加密3 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
爱喝白开水a4 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽4 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康4 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy4 小时前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
ytttr8735 小时前
C# 仿QQ聊天功能实现 (SQL Server数据库)
数据库·oracle·c#
盒马coding5 小时前
第18节-索引-Partial-Indexes
数据库·postgresql
dingdingfish6 小时前
关于Oracle RAC和ADG的学习资料
oracle·database·adg·rac·ha·dr·maa