
引言
大家好,我是小米,31岁,爱折腾代码也爱喝咖啡。今天给大家讲一个我社招面试时的“惊魂瞬间”——一个看似简单的Java后端面试题,却差点让我当场“哑火”。
那是去年秋天的一个下午,天气晴到暴晒。我穿着一件白衬衫去面试一家互联网金融公司,想着八成又是常规的Java八股文,最多来点Spring、JVM调优这种“老朋友”话题。没想到,面试官盯着我笑了一下,说:“小米,咱来聊聊事务吧。你先给我说说,事务的隔离级别有哪些?MySQL的默认隔离级别是什么?”
好家伙,这问题看似平平无奇,但要真讲清楚,可就不是两句话能糊弄过去的事。
先来个“事务”的小故事
我说,面试官,这个问题我得先铺垫一下。
假设你和我去超市买饮料,看到货架上最后两瓶可乐。你先把一瓶放进购物车,这时我也拿走另一瓶,然后我们都去结账。这个场景里,如果用数据库来模拟,就相当于我们同时对同一份库存数据做操作。
如果没有事务隔离,可能发生的事有:
你买单时发现库存为0,生气地瞪了我一眼(脏读)
你刚看到库存还有1瓶,下一秒我买走了,结账时却告诉你没货了(不可重复读)
你明明刚查到有库存1瓶,但还没下单,库存居然变成2了(幻读)
于是,数据库为了防止我们在超市“打架”,就搞出了事务隔离机制,来保证数据的安全性和一致性。
事务的四个隔离级别</
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
















暂无评论内容