大家好呀,我是小米,31 岁,IT 圈摸爬滚打第 N 年,最近因为跳槽的事情,面了好几家公司。
昨天碰到一个 MySQL 社招面试题,真是既经典又阴险——
“你能讲讲 MySQL 的隔离级别和锁的关系吗?”
面试官问得云淡风轻,但我脑子里瞬间飘过四个字:“这题能套牢人”。
有些同学背过四个隔离级别,但一旦让你讲“和锁的关系”,要么开始乱套,要么就干脆背一段枯燥的定义,结果面试官的眉头立刻皱成了“死锁”。
今天这篇文章,我就用一个“饭局故事”,帮你把隔离级别和锁的关系彻底讲透,让你下次面试直接笑着过关。
饭局开场:四种“防御级别”
想象一下,你是某大厂数据库的“宴会保安队长”,现在要守护一桌子菜,不能让人乱动。
你的饭局上有 4 种防御级别,对应的就是 MySQL 的四个隔离级别:
1、读未提交(Read Uncommitted)
就像保安睡着了,别人刚夹到菜,还没吃下去,你就能看见那筷子动作。结果别人反悔不吃了,你就看了个假动作,这就是脏读。
2、读已提交(Read Committed)
保安睁一只眼闭一只眼,等人吃完、放下筷子才让别人看这道菜的情况。脏读没了,但同一道菜看两次,份量可能不一样——这就是