mysql的八种锁
1.行锁
行锁是对索引记录的锁定。 行锁始终锁定索引记录,即使没有定义索引的表也是如此。 对于这种情况,InnoDB创建一个隐藏的密集索引并将该索引用于记录锁定(也就是编程表锁了)。
2.间隙锁
间隙锁定是对索引记录之间的间隙的锁定,或对第一个索引之前的间隙或最后一个索引记录之后的间隙的锁定。
3.临建锁
行锁+间隙锁
4.共享锁/排它锁
共享锁/排他锁都只是行锁,与间隙锁无关。只有共享锁之间兼容,注意这里兼容与不兼容是指不同事务中。
5.意向共享锁/意向排他锁
意向共享锁/意向排他锁属于表锁,且取得意向共享锁/意向排他锁是取得(表级)共享锁/(表级)排他锁的前置条件。共享锁之间不互斥,那么他的作用是啥,是用于表级锁的判断,这样就不用一行一行数据去判断
6.插入意向锁
插入意向锁是一种特殊的间隙锁,但不同于间隙锁的是,该锁只用于并发插入操作。如果说间隙锁锁住的是一个区间,那么插入意向锁锁住的就是一个点。因而从这个角度来说,插入意向锁确实是一种特殊的间隙锁。与间隙锁的另一个非常重要的差别是:尽管插入意向锁也属于间隙锁,但两个事务却不能在同一时间内一个拥有间隙锁,另一个拥有该间隙区间内的插入意向锁(当然,插入意向锁如果不在间隙锁区间内则是可以的)
7 .自增锁
自增锁是一种特殊的表级锁,主要用于事务中插入自增字段,也就是我们最常用的自增主键id.
https://www.cnblogs.com/JiangLe/p/6362770.html