知识卡片
事务的三要素定义与ACID四属性
内容
从ATM取款、过桥付费这类日常金融交易可以提炼出”事务”这个术语的通俗定义,包含三个要素:事务是一段有明确边界的工作序列(插卡时开始、吐钱或提示余额不足时结束);相关资源在事务开始和结束时都保持一致(买酒的人钱变少、酒变多,总资产不变,酒吧也不会做亏本的免费买卖);每个事务要么全部完成、要么什么都不做(除非现金真的吐出来,银行不能扣账)。软件事务通常用ACID四个属性来精确刻画这个定义:原子性——一个事务里的每一步要么全部成功、要么全部回滚,不存在”部分完成”这个状态(转账转到一半服务器崩溃,系统必须回到转账前的状态);一致性——事务开始和完成时,系统资源都必须处于一致、未被破坏的状态;隔离性——一个事务的结果在它成功提交之前,对其他任何事务都不可见;持久性——已提交事务的结果必须是永久性的,即便系统随后崩溃也不能丢失。这四个属性合起来把”三要素定义”里模糊的”一致”“要么全部要么没有”精确化成了工程上可验证的约束条件,是理解后续所有并发/事务模式的共同词汇表。
结构图:
flowchart TB
A["事务ACID"]
A --> B["原子性:全部成功或全部回滚"]
A --> C["一致性:开始/结束时资源状态一致"]
A --> D["隔离性:提交前结果对其他事务不可见"]
A --> E["持久性:提交结果崩溃后仍保留"]
参考来源
- 位置:《企业应用架构模式》第一部分"表述"之"第5章 并发"之"5.5 事务"与"5.5.1 ACID"(源文件:_epub-src/OEBPS/Text/000035.html)
- 结论依据:原文说明"事务是一个有边界的工作序列……所有相关资源在事务开始和结束时都保持一致……每个事务都必须保证要么全部完成,要么什么都不做",随后逐一定义"原子性……一致性……隔离性……持久性"四个ACID属性,直接支撑本卡结构图。
- 原始内容:原子性(Atomicity):在一个事务里,动作序列的每一个步骤都必须是要么全部成功,要么所有的工作都将回滚。部分完成不是一个事务概念。