Mysql中有很多种类的锁,表锁、行锁、读锁、写锁、Gap锁等等等等,加锁规则也有所差别,这里把我之前做过的分享ppt拿出来为大家好好梳理一下,通过八个经典案例一次性搞懂这些加锁规则!
ps:需要资源请联系公众号
先约束一下Mysql的版本,不同版本的实验结果可能有偏差。
这里先用一个极端的例子引入一下间隙锁(Gap锁)的概念:
语句的先后执行顺序我用紫色箭头标识出来了:
幻读出现了:
间隙锁的概念:
间隙锁和行锁的对比,其实二者差异还挺大的,具体见ppt:
引入了间隙锁的概念之后,就可以进一步引入next-key lock的概念了:
这里插一个题外话,在使用mysql时有可能会遇到死锁的情况,要小心:
重头戏来了,加锁规则一定要记住!后面会一直重复一直重复
此时加锁的区域如下图的阴影部分所示: