大家好,我是你们的老朋友Bug终结者,今天咱们来聊聊MySQL事务隔离级别里那个有点神秘的家伙——REPEATABLE READ。 很多同学可能觉得,隔离级别嘛,不就是那几个单词吗?READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ,SERIALIZABLE。背都能背下来。但你真的理解它们背后的原理,以及REPEATABLE READ的独特之处了吗? 别急着回答,咱们先从一个故事开始… 故事的开始:三个倒霉蛋的遭遇 假设我们有三个哥们儿:小明,小红,老王。他们都在访问同一个数据库,执行不同的操作。 小明: 负责统计商品总数 小红: 负责给特定商品涨价 老王: 负责下单购买商品 如果数据库没有事务隔离机制,或者隔离级别太低,这三个人之间就会互相干扰,产生各种奇奇怪怪的问题。比如: 脏读: 小红还没提交涨价操作,小明就读到了涨价后的商品数量,结果统计了个寂寞。 不可重复读: 小明第一次统计商品数量是100,小红涨价后提交了,小明第二次统计商品数量变成101,心态崩了啊! 幻读: 老王下了一单,小明统计发现多了个商品,这商品从哪儿冒出来 …