最近啊,我准备跳槽了!
是的,一个在公司搬了五年砖的我,终于在上个月鼓起勇气投了几家心仪的公司,走上了社招之路。期间当然被“摧残”了一遍又一遍,什么MySQL索引原理、JVM内存模型、Netty工作原理……但让我印象最深刻的,还是某家互联网大厂面试官的一道看似简单实则“暗藏杀机”的题:
“请你讲讲 Spring 的事务隔离级别,顺便说说你对数据库事务一致性的理解。”
我心想:这不就ACID嘛!但刚开口,我就意识到问题不简单。
这不,今天就来和大家唠唠这个问题,咱也不整啥高深理论,用我亲身经历的项目故事,手把手带你了解Spring的事务隔离级别,看到最后你能秒杀面试官。
咱得从 ACID 开始说起!
“事务”是什么?
我问你:如果你去ATM取钱,钱扣了但没吐出来,你心里烦不烦?
数据库事务就是为了避免这种“尴尬局面”,保证数据的一致性,它必须满足四大特性,也就是经典的 ACID:
- 原子性(Atomicity):事务中的操作要么全部成功,要么全部失败。
- 一致性(Consistency):事务完成后,数据要从一个一致状态变为另一个一致状态。
- 隔离性(Isolation):多个事务并发执行时,相互不干扰。
- 持久性(Durability):事务提交后,其结果会永久保存在数据库中。
今天我们的主角就是第三个:隔离性!
隔离性是怎么“出事”的?
事务不隔离,会怎么样?咱举个例子你就懂了。
项目背景介绍
我在公司维护一个库存系统,两个功能常一起操作数据库:
- A功能:用户下单,扣库存;

最低0.47元/天 解锁文章
173万+

被折叠的 条评论
为什么被折叠?



