mysql 锁详解

在这里插入图片描述

mysql的八种锁

1.行锁

行锁是对索引记录的锁定。 行锁始终锁定索引记录,即使没有定义索引的表也是如此。 对于这种情况,InnoDB创建一个隐藏的密集索引并将该索引用于记录锁定(也就是编程表锁了)。

2.间隙锁

间隙锁定是对索引记录之间的间隙的锁定,或对第一个索引之前的间隙或最后一个索引记录之后的间隙的锁定。

3.临建锁

行锁+间隙锁

4.共享锁/排它锁

共享锁/排他锁都只是行锁,与间隙锁无关。只有共享锁之间兼容,注意这里兼容与不兼容是指不同事务中。

5.意向共享锁/意向排他锁

意向共享锁/意向排他锁属于表锁,且取得意向共享锁/意向排他锁是取得(表级)共享锁/(表级)排他锁的前置条件。共享锁之间不互斥,那么他的作用是啥,是用于表级锁的判断,这样就不用一行一行数据去判断

6.插入意向锁

插入意向锁是一种特殊的间隙锁,但不同于间隙锁的是,该锁只用于并发插入操作。如果说间隙锁锁住的是一个区间,那么插入意向锁锁住的就是一个点。因而从这个角度来说,插入意向锁确实是一种特殊的间隙锁。与间隙锁的另一个非常重要的差别是:尽管插入意向锁也属于间隙锁,但两个事务却不能在同一时间内一个拥有间隙锁,另一个拥有该间隙区间内的插入意向锁(当然,插入意向锁如果不在间隙锁区间内则是可以的)

7 .自增锁

自增锁是一种特殊的表级锁,主要用于事务中插入自增字段,也就是我们最常用的自增主键id.
https://www.cnblogs.com/JiangLe/p/6362770.html

发布了21 篇原创文章 · 获赞 2 · 访问量 6595

猜你喜欢

转载自blog.csdn.net/qq_36638446/article/details/104118021