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

相关推荐
byte轻骑兵1 小时前
时序数据库选型全指南|大数据工业场景Apache IoTDB落地实操
大数据·数据库·人工智能·apache iotdb
Sirens.1 小时前
MySQL数据库:JDBC编程
数据库·mysql
蓝速科技2 小时前
会议室门牌签到功能选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
Hrain-AI11 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构
净水深流11 小时前
中央厨房冷链技术实践:多温区改造、WMS落地与IoT温控架构
大数据·数据库·人工智能·冷库冷链
l1t12 小时前
测试DuckDB 2.1的match_recognize模式匹配语句
数据库·duckdb
IpdataCloud13 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
曹牧13 小时前
Java:SQL 注入漏洞
数据库
程序员JerrySUN13 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis