事务的四个特性(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 是掌握数据库事务处理和并发控制的基础。

相关推荐
小徐不徐说4 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
论文复现现场5 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
Decay__6 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
心梦缘-雪雁7 小时前
SQL Server 查询数据存在哪个表里
数据库
lusklusklusk8 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
GeW8 小时前
产业新优势基础软件的人才底盘,从Linux与数据库开始
linux·数据库
SelectDB8 小时前
Doris Arrow Flight SQL 高速读取协议实战:与 Snowflake 客户端取数链路对照
大数据·数据库·数据分析
曼岛_8 小时前
[图解密码学]第4章 古典密码
java·数据库·密码学
瀚高PG实验室9 小时前
HGDB V9.0.5 .pgpass 免密登录提示 IsEncryptNon-base64 encoding 警告处理
数据库·postgresql·瀚高数据库
龙腾AI白云10 小时前
大模型检索增强生成(RAG)的技术原理与架构设计
数据库·python·机器学习·知识图谱