什么是事务四大特性?用业务案例通俗讲透 ACID
什么是事务四大特性用业务案例通俗讲透 ACID“转账一半系统崩了怎么办”“两个订单同时抢最后一件库存超卖谁背锅”“查账单的时候钱还在不在”这些问题本质上都在问一件事数据库的事务靠不靠谱而判断一个事务靠不靠谱业界有一套黄金标准——ACID。这四个字母撑起了整个关系型数据库的信任基石。今天不讲枯燥定义我们用电商下单、转账、支付这些你每天都在写的业务场景把 ACID 讲透。先给一句话人话版定义特性英文一句话解释原子性Atomicity要么全做要么全不做​一致性Consistency数据从一个合法状态变到另一个合法状态​隔离性Isolation多个事务互不干扰像排队一样​持久性Durability提交成功落地生根断电也不丢​接下来一个个拆解。一、原子性Atomicity要么都成功要么都失败业务场景转账A 给 B 转账 100 元。底层至少两步操作1. A 账户扣 100 元 2. B 账户加 100 元如果第 1 步成功第 2 步失败比如服务宕机、网络抖动会发生什么A 少了 100B 没收到钱钱“人间蒸发”了 这显然不能接受。原子性如何兜底数据库保证这两步属于同一个事务。START TRANSACTION; UPDATE account SET balance balance - 100 WHERE id A; UPDATE account SET balance balance 100 WHERE id B; COMMIT;两条 SQL要么一起成功只要有一条失败数据库自动执行ROLLBACK回滚最终结果钱既没少也没多系统回到转账前的状态✅ 原子性 “同生共死”就像火箭发射要么整体升空要么原地不动绝不允许“半空解体”。二、一致性Consistency数据永远“说得通”业务场景下单扣库存用户下单买一件商品库存从 10 变成 9。这里有几个“业务规则”约束库存不能为负数订单金额必须等于商品单价 × 数量已支付订单必须有对应的支付记录什么是一致性事务执行前后数据库都必须满足所有业务规则和约束。START TRANSACTION; -- 扣库存 UPDATE product SET stock stock - 1 WHERE id 1001; -- 创建订单 INSERT INTO orders(...) VALUES(...); COMMIT;如果库存不足数据库会直接报错如 CHECK / 外键 / 应用层校验事务回滚库存还是 10订单也不会生成不会出现“库存 -1订单却不存在”的脏数据✅ 一致性 “数据始终讲道理”⚠️ 注意一个常见误区一致性不是数据库自动保证的业务逻辑而是原子性 隔离性 持久性再加上你写的正确的业务代码共同维护的结果。换句话说ACID 里A、I、D 是数据库的能力C 是你和数据库一起守住的底线三、隔离性Isolation并发不乱各走各的业务场景秒杀抢最后一件商品商品只剩 1 件同时来了两个请求用户 A下单用户 B下单如果没有隔离性可能出现这种情况A 查库存 1 B 查库存 1 A 扣库存 → 0 B 扣库存 → -1 ❌超卖这就是典型的并发问题。隔离性做了什么数据库通过锁 / MVCC多版本并发控制让多个事务互相隔离。以InnoDB 默认的 REPEATABLE READ​ 为例A 的事务开启后看到库存 1B 的事务也被正确隔离其中一个事务提交后另一个再操作时会被阻塞或失败最终只有一个订单成功库存从 1 → 0✅ 隔离性 “你在操作的时候别人看不到中间状态”可以把它想象成每个人进了一个“小黑屋”操作数据关上门干活干完才开门让别人进来。当然隔离级别越高并发性能越低这是经典的CAP 权衡​ 在事务里的体现。四、持久性Durability落盘才是真安全业务场景支付成功用户完成支付页面提示“支付成功”。这时候如果数据库服务器突然断电数据会丢吗如果符合持久性不会丢。数据库是怎么做到的事务提交时不只是改内存还会把修改记录写入redo log重做日志redo log 是顺序写磁盘速度很快即使断电重启后数据库也会根据 redo log恢复已提交的数据COMMIT → 写 redo log → 返回客户端成功所以哪怕 MySQL 进程崩溃、服务器掉电✅ 已经COMMIT的数据一定存在⚠️ 注意持久性 ≠ 立刻刷盘到数据页而是提交成功 数据库承诺我能恢复✅ 持久性 “说了算不算赖账”四兄弟的关系谁也离不开谁很多人以为 ACID 是四个独立特性其实它们是一个整体原子性保证操作不残缺一致性是最终目标数据正确隔离性防止并发破坏一致性持久性保证结果不丢失可以用一句话串起来在一个支持隔离性的环境中通过原子性和持久性最终达成数据的一致性。举个完整例子下单全流程START TRANSACTION; -- 1. 扣库存 UPDATE product SET stock stock - 1 WHERE id 1001 AND stock 0; -- 2. 创建订单 INSERT INTO orders(order_no, user_id, amount) VALUES (ON123, 1, 100); -- 3. 扣账户余额 UPDATE account SET balance balance - 100 WHERE id 1 AND balance 100; COMMIT;在这个事务里原子性任意一步失败全部回滚一致性库存、订单、余额始终保持业务合法隔离性并发下单不会互相覆盖库存持久性COMMIT 成功后哪怕宕机订单也真实存在常见误区澄清面试常问1️⃣ 隔离性 串行化❌ 不是。串行化是最高隔离级别InnoDB 常用的是REPEATABLE READ通过 MVCC 实现高性能并发2️⃣ 一致性是谁保证的✅ 数据库保证约束唯一、外键、NOT NULL✅ 开发人员保证业务逻辑正确✅ 原子性 / 隔离性 / 持久性是基础3️⃣ Spring 的Transactional能保证 ACID 吗能保证原子性、隔离性、持久性一致性​ 仍然依赖你写的业务代码比如你忘了校验余额数据库也没约束那一致性照样崩

相关新闻

电力电子器件串并联核心技术:均压均流原理与工程实践详解

电力电子器件串并联核心技术:均压均流原理与工程实践详解

1. 项目概述:为什么器件串并联是电力电子的“必修课”干了十几年电力电子,从做学生时焊第一个晶闸管调压电路,到后来设计兆瓦级的逆变器,有一个话题始终绕不开,那就是器件的串联和并联使用。乍一看,这似乎是…

2026/10/25 13:27:55 阅读更多 →
Simulink中质子交换膜燃料电池建模与仿真实践

Simulink中质子交换膜燃料电池建模与仿真实践

1. 质子交换膜燃料电池(PEMFC)建模基础燃料电池作为清洁能源技术的重要代表,其建模与仿真一直是能源系统研究的热点。质子交换膜燃料电池(PEMFC)因其启动快速、功率密度高等特点,在汽车动力系统、分布式发电等领域具有广泛应用前景。PEMFC的工作原理本质…

2026/10/25 20:20:44 阅读更多 →
长治安防监控筛选指南:瑞创竣工资料规范说明

长治安防监控筛选指南:瑞创竣工资料规范说明

长治智能弱电选型核心:从安防监控看竣工资料规范性在长治地区,随着数字化转型的深入,企业和家庭在进行智能化升级时,往往面临供应商繁多、服务标准不一的挑战。寻找长治地区值得关注的智能弱电与音视频全场景解决方案品牌&#xf…

2026/10/25 21:34:41 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/25 22:36:10 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/26 5:00:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/26 3:16:46 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →