事务的四个特性(ACID)详解

1. 什么是事务

事务(Transaction)是数据库管理系统执行过程中的一个逻辑工作单元,由一组 SQL 操作组成。事务内的操作要么全部成功提交,要么全部失败回滚,不会出现部分成功、部分失败的情况。

例如,银行转账操作中,从 A 账户扣款和向 B 账户加款必须作为一个整体执行。如果扣款成功但加款失败,整个事务必须回滚,保证数据的一致性。

2. 事务的四个特性(ACID)

事务的四个特性通常简称为 ACID,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

2.1 原子性(Atomicity)

原子性要求事务是一个不可分割的整体,事务中的所有操作要么全部成功,要么全部失败。事务执行过程中如果发生错误,系统会通过回滚(Rollback)将数据恢复到事务开始前的状态。

以转账为例:扣款和加款两个操作必须同时成功或同时失败,不能出现只扣款不加款的情况。

2.2 一致性(Consistency)

一致性要求事务执行前后,数据库都必须处于一致的状态,即满足所有预定义的约束规则,如主键约束、外键约束、唯一约束、非空约束等。

一致性是事务的最终目标,原子性、隔离性和持久性都是为一致性服务的。事务完成后,数据必须从一个一致状态转换到另一个一致状态。

2.3 隔离性(Isolation)

隔离性要求多个事务并发执行时,彼此之间互不干扰,一个事务的执行不能被其他事务干扰。每个事务都感觉不到其他事务在并发执行,就像在独立运行一样。

数据库通过锁机制和多版本并发控制(MVCC)来实现隔离性。隔离级别从低到高分为:读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。

2.4 持久性(Durability)

持久性要求事务一旦提交成功,其对数据库的修改就是永久性的,即使系统发生崩溃或断电,修改的数据也不会丢失。

数据库通常通过写日志(如 Redo Log)和定期备份来实现持久性。事务提交时,系统会将修改记录写入持久化存储,确保数据在故障后可以恢复。

3. ACID 特性之间的关系

ACID 四个特性相互配合,共同保证数据库的可靠性:

  • 原子性是基础,保证事务操作的整体性。
  • 一致性是目标,保证数据始终满足约束规则。
  • 隔离性是手段,保证并发事务互不干扰。
  • 持久性是保障,保证提交后的数据不丢失。

4. 总结

事务的四个特性 ACID 是关系型数据库可靠性的核心保障。原子性保证操作不可分割,一致性保证数据始终合法,隔离性保证并发安全,持久性保证数据不丢失。理解 ACID 是掌握数据库事务处理和并发控制的基础。

相关推荐
染指11108 分钟前
140.Agent-多Agent框架-Agent执行Skills流程
数据库·人工智能·设计模式·langchain·agents
fengkai454512 分钟前
十二、Redis -2
运维·数据库·redis·容器
余槐i1 小时前
200万行表加索引锁死写入:PostgreSQL CONCURRENTLY 的三类等待与重建路径
数据库·postgresql·性能优化·索引·explain
北龙云海1 小时前
AI驱动数据库运维变革:北龙云海智能巡检平台实践与展望
运维·数据库·人工智能
带金箍的至尊宝1 小时前
系统架构设计师笔记 05:第2章硬件与软件基础,冯诺依曼结构怎么考
数据库·笔记·系统架构
蟕初的梦想2 小时前
Claude Haiku 5.5 效能实测与场景应用指南
数据库·人工智能·大模型
专注API从业者2 小时前
告别复杂页面解析,OpenClaw 快速搭建电商商品监控与数据分析脚本
大数据·数据库·python·数据挖掘·数据分析
naturliche2 小时前
sgx支持数据库环境配置,编译,debug
数据库·编译·sgx
SelectDB2 小时前
Apache Doris x Fluss:面向湖流一体的统一查询与分析
大数据·数据库·数据分析